public class Footest {
public static void main(String[] args) {
show();
}
public void show() {
System.out.println("show");
}
}
第 4 行有一个错误(show();),为了修复它,Eclipse 告诉我将 show() 方法更改为静态,并显示一条消息“无法对非静态方法 show() 进行静态引用”来自 Footest 类型。”。但我无法完全理解为什么该方法应该是静态的。我的意思是,它会带来什么变化?我真的需要有人帮助我轻松地解决它。
我知道答案是将 show() 方法更改为静态方法。但我真正想知道的是“为什么”有效!!
当处于静态上下文中时(例如,在像 main 这样的静态方法内),如果没有类的实例来限定访问,则不能访问该类中的任何实例方法。所以你也可以像下面这样访问它:
Footest ft = new Footest();
ft.show();
现在的问题可能是为什么不使用实例限定符?
因为静态方法是类方法,可以共享和使用,不需要类的实例。
因此,一旦进入静态上下文(即静态方法),就无法知道应该调用该类的许多可能实例中的哪个方法。这也适用于从静态上下文访问实例字段。