我对Java中的静态方法有疑问。为什么我可以在另一个非静态方法中调用非静态方法而不指定类的实例。例如,如果我有两个非静态方法foo1()和foo2(),我可以说foo2(){foo()}。我不能用静态方法做到这一点。例如,静态void foo3(){foo()},这不会编译。这是。在非静态方法中调用其他方法时隐式?
谢谢。
答案 0 :(得分:6)
为什么我可以在另一个非静态方法中调用非静态方法而不指定类的实例。
因为它隐含地在this
上调用它:
public void foo1() {
foo2();
}
相当于:
public void foo1() {
this.foo2();
}
在静态方法中, 没有this
隐式用作调用的目标。
答案 1 :(得分:1)
在非静态上下文中,您处于类的实例中。您可以在该类上调用其他非静态方法,因为您在this
上调用该方法。在静态上下文中,您没有this
,因此您无法在没有特定实例的情况下调用方法。