与字段相似,方法也可以分为静态和非静态。
静态方法可以访问静态字段,也可以访问静态方法。但是静态方法不能直接访问非静态方法,必须通过对象的实例进行访问。
相反,非静态方法在访问时没有限制,既可以访问静态的,也可以访问非静态的。
其实,只要想想原理就能明白。对象直接要进行互动就必须先具备形体,而创建对象,或者使用静态修饰符修饰,就是创建形体。举个例子:
public class demoStaticMethod{
private int a = 10; //非静态字段
private static int b = 20; //静态字段
public static void main(String[] args){
sayHello();
sayHi(); //这里会报错,因为静态方法main不能直接访问非静态方法 sayHi();
System.out.println(a); //这里会报错,因为静态方法main不能直接使用非静态字段 a
System.out.println(b);
demoStaticMethod dSM = new demoStaticMethod();
dSM.sayHi(); //静态访问非静态,必须创建实例进行访问
System.out.println(dSM.a); //通过实例访问非静态字段
}
static void sayHello(){ //静态方法
System.out.println("Say Hello!");
}
void sayHi(){ //非静态方法
System.out.println("Say Hi!");
}
}
本文探讨了在Java中静态方法与非静态方法的区别及如何互相访问。静态方法可以直接访问静态字段和其他静态方法,但访问非静态成员时需通过实例化对象。非静态方法则不受此限。
890

被折叠的 条评论
为什么被折叠?



