0

我对 Java 中的静态方法有疑问。为什么我可以在另一个非静态方法中调用非静态方法而无需指定类的实例。例如,如果我有两个非静态方法 foo1() 和 foo2(),我可以说 foo2(){ foo() }。我不能在静态方法中做到这一点。例如 static void foo3(){ foo() },这不会编译。这是。在非静态方法中调用其他方法时隐式?

谢谢你。

4

2 回答 2

6

为什么我可以在另一个非静态方法中调用非静态方法而无需指定类的实例。

因为它隐含地调用它this

public void foo1() {
    foo2();
}

相当于:

public void foo1() {
    this.foo2();
}

在静态方法中,没有this式用作调用的目标。

于 2013-02-24T08:13:28.240 回答
1

在非静态上下文中,您处于类的实例中。您可以在该类上调用其他非静态方法,因为您在this. 在静态上下文中,您没有this,因此您不能在没有特定实例的情况下调用方法。

于 2013-02-24T08:13:28.080 回答