Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我对 Java 中的静态方法有疑问。为什么我可以在另一个非静态方法中调用非静态方法而无需指定类的实例。例如,如果我有两个非静态方法 foo1() 和 foo2(),我可以说 foo2(){ foo() }。我不能在静态方法中做到这一点。例如 static void foo3(){ foo() },这不会编译。这是。在非静态方法中调用其他方法时隐式?
谢谢你。
为什么我可以在另一个非静态方法中调用非静态方法而无需指定类的实例。
因为它隐含地调用它this:
this
public void foo1() { foo2(); }
相当于:
public void foo1() { this.foo2(); }
在静态方法中,没有隐this式用作调用的目标。
在非静态上下文中,您处于类的实例中。您可以在该类上调用其他非静态方法,因为您在this. 在静态上下文中,您没有this,因此您不能在没有特定实例的情况下调用方法。