2013-02-24 141 views
0

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

谢谢。

+0

@BrianRoach不是。 – assylias 2013-02-24 08:24:39

+0

@assylias是的,真的。如果OP正在采用静态方法在同一个类中调用另一个静态方法......我们不会进行这种对话,因为这种方法工作得很好。 – 2013-02-24 08:30:04

回答

6

为什么我可以在没有指定类的实例的情况下在另一个非静态方法中调用非静态方法。

因为它隐含调用它this

public void foo1() { 
    foo2(); 
} 

等同于:

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

在静态方法,有没有this为目标,以隐含的使用电话。

+0

谢谢你的解释。 – 2013-02-24 08:20:38

1

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