2014-09-24 107 views
0

因此,我剛剛開始編程,而不是和這個問題讓我感到頭痛。 這是問「在什麼情況下,如果有的話,靜態方法可以調用實例方法嗎?」 我試過回到章節提到兩種方法,並沒有提示。有人可以幫忙嗎?將不勝感激。靜態方法是否可以調用Java中的實例方法

+3

「當它有一個它希望調用該方法的實例的引用」? – 2014-09-24 14:54:04

回答

0

爲了調用實例方法,您需要一個實例。所以一個靜態方法可以調用一個實例方法,只要它有一個實例的引用來調用它。

0

靜態方法可以自由調用,但實例方法只能在有類的實例時調用。靜態方法需要從某處獲取實例,或者自己創建一個實例。

例如,靜態方法可以創建一個類的實例,然後調用一個實例方法就可以了:

class Foo { 
    static void staticMethod() { 
     Foo foo = new Foo(); 
     foo.instanceMethod(); 
    } 

    void instanceMethod() { } 
} 

或者靜態方法可以通過它的調用者傳遞一個實例。

class Foo { 
    static void staticMethod(Foo foo) { 
     foo.instanceMethod(); 
    } 

    void instanceMethod() { } 
} 

這些不是唯一的方法,但它們是常見的。所需要的是靜態方法以某種方式得到實例。

1

靜態方法始終可以調用實例方法 - 只要它們具有對調用該方法的實例的引用即可。

例如:

public static void main(String[] args) { 
    String foo = "hello"; 
    System.out.println(foo.length()); 
} 

length()String實例方法,main是一個靜態方法,但我仍然罰款叫它......因爲foo提供了參考。

靜態方法和實例方法在這方面的唯一區別是實例方法隱式地聲明瞭方法聲明的類型 - this

0

如果對象是方法的參數 - >確定 但是靜態方法不能用於非靜態類變量,因爲這些變量是特定於此類的每個實例的,並且靜態方法獨立於對象,並且只有一次存在,無論該類有多少個對象。

這是否解釋了它?

相關問題