静态方法与非静态方法的区别
实例方法比静态方法多传递一个隐含的指针参数,该指针指向该方法所从属的已被实例化的对象。这一区别的外在表现为实例方法内可使用this关键字代表所从属的实例对象,而静态方法不可使用this因为静态方法不针对任何实例对象。实例对象调用静态方法会因参数中多出一个指向自己的指针(this)而发生错误。 定义静态方法只需加注static关键字即可。静态方法独立于对象实例之外,与对象是否已被实例化无关,调用静态方法要用类定义的名称而不能用实例名称如: class a { ... public static void b(){}//静态方法 public void d(){}//实例方法 } a c = new a(); a.b();//正确的调用方式,与对象实例无关。 a.d();//错误的调用方式。 c.b();//错误的调用方式。 c.d();//正确的调用方式,隐含this指针,不需要也不允许显式传入对象指针。
还有一个疑问:
静态与非静态的存在之区别在调用方法的不同吗?在编程的时候有没有各自存在的优势呢?例如有的时候用非静态方法较好。