因此,我剛剛開始編程,而不是和這個問題讓我感到頭痛。 這是問「在什麼情況下,如果有的話,靜態方法可以調用實例方法嗎?」 我試過回到章節提到兩種方法,並沒有提示。有人可以幫忙嗎?將不勝感激。靜態方法是否可以調用Java中的實例方法
0
A
回答
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
如果對象是方法的參數 - >確定 但是靜態方法不能用於非靜態類變量,因爲這些變量是特定於此類的每個實例的,並且靜態方法獨立於對象,並且只有一次存在,無論該類有多少個對象。
這是否解釋了它?
相關問題
- 1. 是否可以通過靜態方法訪問實例變量?
- 2. 是否可以確定實例方法是否在原型方法中調用?
- 3. 在java中的靜態方法vs實例方法的決定?
- 4. 我可以從Worker線程調用靜態類實例的靜態方法嗎?
- 5. 從靜態方法調用所有實例的接口方法
- 6. Java,靜態方法可以實例化一個被調用的對象嗎?
- 7. 以靜態方法調用?
- 8. 一個靜態方法總是可以轉換爲一個實例方法嗎?
- 9. 創建實例以調用靜態方法的模式名稱
- 10. 如何在編寫靜態方法的junit時從靜態方法中模擬實例方法調用?
- 11. 在對象實例和旁註上調用靜態方法Java
- 12. 在java中的靜態方法,我可以以非靜態方式訪問靜態方法嗎?
- 13. 在靜態方法中使用非靜態變量或調用非靜態方法(使用對象實例訪問)是否是一種很好的做法?
- 14. Python中的靜態和實例方法
- 15. 可以使用對象實例訪問Java中的靜態方法
- 16. 靜態方法可以在Java中調用它自己嗎?
- 17. 本地Java方法是否等同於靜態Java方法?
- 18. 調用實例方法的實例方法調用實例方法
- 19. @compatibility_alias可以調用實例方法嗎?
- 20. 從類方法調用實例方法:可能或不可以?
- 21. 在java中調用非靜態方法
- 22. 爲什麼靜態方法在單例實例中不可用?
- 23. 在JAVA中是靜態方法創建單個實例嗎?
- 24. 從Python中的靜態方法調用非靜態方法
- 25. 調用synchronized靜態方法,那麼可以訪問其他靜態方法嗎?
- 26. 在靜態方法中包裝單例實例方法是不好的?
- 27. 使用方法調用靜態方法?
- 28. 包含對象實例的靜態方法,是否錯誤?
- 29. 內存中的靜態方法和實例方法
- 30. python類中的實例方法和靜態方法
「當它有一個它希望調用該方法的實例的引用」? – 2014-09-24 14:54:04