我知道在java中靜態方法只能使用靜態變量和靜態方法,而非靜態方法可以使用非靜態變量和方法。有什麼解釋爲什麼靜態方法只能訪問靜態變量/方法?並不能訪問非靜態方法和變量?靜態方法和變量
靜態方法和變量
回答
要訪問非靜態方法/字段,您需要一個類的實例。
...按定義。 – 2011-12-25 06:50:15
但是OP想知道*爲什麼*。這是一些武斷的規則,還是有原因?我們應該解釋「是的,有一個非常重要的原因」。恕我直言... – paulsm4 2011-12-25 07:28:41
如果我們理解「靜態」實際上意味着什麼(而不是僅僅學習規則),那麼理由應該是顯而易見的。 – 2011-12-25 07:38:25
當你實例化一個類時,它將被加載到堆或棧中。在這種情況下,您的應用程序會引用內存實例所在的那些部分。但是,靜態方法只是加載到內存中的函數。這就是爲什麼如果你的靜態方法想要訪問一個類變量或方法,它不能僅僅調用它,因爲可能存在多個對該堆中的那個類的引用,與之相反,只有一個靜態方法可以存在。
如果你想從靜態方法調用任何非靜態方法,你應該使用實例(或創建一個)到該類,以便你可以定義你真正意義的類引用。
在靜態上下文中,「this」關鍵字不可訪問。我們不能在靜態上下文中使用這個關鍵字。實例變量在構造函數調用時被初始化。但是靜態變量在類加載時被初始化。在類的加載過程中,如果我們在靜態上下文中使用實例變量,實例變量在這段時間內仍未被識別,它會導致編譯時錯誤,因爲它們當時未被識別
- 1. 靜態變量和方法
- 2. 有關靜態方法和變量
- 3. 靜態成員變量和方法
- 4. 什麼是靜態方法和變量?
- 5. python靜態變量和方法
- 6. Kotlin靜態方法和變量
- 7. PHP變量變量的靜態方法
- 8. 對靜態變量和靜態方法的未定義參考
- 9. 靜態變量和靜態方法之間的區別
- 10. 靜態方法和靜態變量的Java
- 11. 方法和變量有非靜態需要是靜態錯誤
- 12. Android Studio靜態或非靜態變量和方法
- 13. 爪哇 - 靜態方法和靜態變量
- 14. 靜態方法和靜態變量,糟糕的設計實踐?
- 15. 靜態方法中的靜態變量不會改變
- 16. 靜態類中的靜態變量和非靜態類中的靜態變量
- 17. 靜態方法變量問題
- 18. 訪問靜態變量的Const方法
- 19. vbscript靜態類變量/方法?
- 20. 靜態方法內部變量共享
- 21. 靜態方法的Java實例變量
- 22. python方法中的靜態變量
- 23. CoffeeScript的繼承:靜態變量/方法
- 24. 靜態函數和非靜態變量
- 25. 從靜態方法訪問非靜態成員變量
- 26. 用靜態方法更改一個靜態變量
- 27. 無靜態變量「這種」靜態方法
- 28. 靜態方法來分配非靜態變量
- 29. 訪問靜態變量從靜態方法
- 30. 從C++中的靜態方法訪問非靜態類變量
可能的重複[無法從靜態函數?](http://stackoverflow.com/questions/8029845/cannot-be-referenced-from-a-static-function) – 2011-12-25 06:48:09
它不是重複的,我的問題的內容是完全不同的。 – KyelJmD 2011-12-25 06:56:33
該問題的答案同樣適用於這個問題。 – 2011-12-25 06:58:46