2013-02-24 185 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,所以你不能在沒有特定實例的情況下調用方法。