非静态方法比静态方法多传递一个隐含的指针参数,该指针指向该方法所在类已被实例化的对象。这一区别的外在表现为非静态方法内可使用this关键字代表所从属的类,而静态方法不可使用this,因为静态方法不针对任何实例对象。非静态方法调用静态方法会因参数中多出一个指向自己的指针(this)而发生错误。 定义静态方法只需加注static关键字即可。静态方法独立于对象实例之外,与对象是否已被实例化无关,调用静态方法要用类定义的名称而不能用实例名称。
示例代码如下:
定义类及方法:
class Class1
{
...
public static void Method1(){}//静态方法
public void Method2(){}//实例方法
}
能过实例化的对象调用方法:
Class1 c = new Class1 ();
c.Method1();//错误的调用方式,静态方法不能通过实例化的对象调用。
c.Method2();//正确的调用方式,隐含this指针,不需要也不允许显式传入对象指针。
不实例化对象,直接调用对象方法:
Class1.Method1();//正确的调用方式,与对象实例无关。
Class1.Method2();//错误的调用方式,非静态方法必须通过实例化的对象调用。
b(u愽e,