回答
靜態方法與類關聯,而不與類的任何實例關聯。
見http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
對象是成員變量和方法需要的,但靜態是應用程序變量或函數這是靜態不需要對象的原因之一。
因爲JVM可以調用該方法適合你(但它認爲合適)。否則,兔子洞在哪裏結束?他們本可以通過創建一個已知的interface
完成你的建議,本身的方法是main
。例如:
interface ApplicationStarter
{
void start(String []args);
}
但是那裏有關於構造函數。存在許多類似的問題的框架,比如SPI,出於類似的原因需要默認的(無參數)構造函數。當這些框架的預先要求(例如,沒有參數的構造函數,或者對於其他一些框架可能不是)以及初學者覺得這很難時,這樣的框架就會失敗。將應用程序的最基本部分「複雜化」並不是實現採用的好方法。
對於應用程序的開始/入口點,依賴於類似於幾乎所有其他語言的已知入口點(main
)要容易得多:不要擔心對象不構造或覆蓋。
main()
方法是靜態的,因爲它們可以被運行時引擎調用,而不必實例化父類的實例。
Static
方法,這在他們的聲明中的static修飾符,應該用類名來調用,而無需創建類
的一個實例,考慮這個例子,有含有母親的家庭和三個孩子。母親爲每個孩子帶來三個冰淇淋球,但三個孩子只帶一個PSP。所有的孩子都使用相同的PSP,但他們有自己的冰淇淋。
這裏冰淇淋是一個非靜態的東西(方法/變量),PSP是靜態的東西,母親是班級,孩子是物體。
這很簡單。靜態屬於一個類,它對於一個類的所有對象都是常見的。非靜態事物是特定於對象的。
是的,你是正確的,你不需要一個實例對象來調用一個類的靜態方法,因爲靜態方法屬於一個類,而不是該類的實例。此外,您不能在靜態方法內使用實例變量,因爲實例變量屬於該實例。
當我們執行一個java文件時,一個java編譯器會自動加載並執行靜態成員。
我是新來的java所以請原諒我,如果我的回答是錯誤的。
- 1. 爲什麼CustomFieldSerializer需要靜態方法?
- 2. 爲什麼我們需要創建模擬對象?
- 3. 爲什麼我們需要addRequestHeader方法?
- 4. 爲什麼我們需要ContinueWith方法?
- 5. 爲什麼我們需要Buffer.isBuffer方法?
- 6. 爲什麼我無法爲靜態類創建擴展方法?
- 7. 爲什麼我們要聲明一個靜態方法
- 8. 爲什麼我不需要創建一個對象?
- 9. 爲什麼我們需要接口Java 8中的靜態方法?
- 10. 爲什麼我的對象不需要調用.toString方法?
- 11. 爲什麼由單體對象創建的scala程序不需要靜態主方法?
- 12. 什麼是伴侶對象,爲什麼我們需要它?
- 13. 爲什麼主要方法需要是靜態的?
- 14. 爲什麼我們需要爲openstack創建localrc文件
- 15. 爲什麼我們需要一個明確的轉換,而不是擴展方法而不是靜態方法?
- 16. 爲什麼我需要'新'來創建一個對象?
- 17. 使用類創建對象,爲什麼我需要__init __(self,args):?
- 18. 爲什麼只有我真的需要創建兩個對象?
- 19. 爲什麼我們需要在創建對象時額外添加'get'和'set'?
- 20. 爲什麼我不能在任何方法外創建對象
- 21. Ruby:爲什麼我們不需要`attr_accessor`?
- 22. 爲類創建對象爲靜態
- 23. 爲什麼「case class」不需要「new」來創建新對象
- 24. 爲什麼你不需要在Java中創建對象?
- 25. 爲什麼我的靜態構建需要共享庫?
- 26. 創建新Activity時,爲什麼我們需要將EditText對象轉換爲EditText對象?
- 27. 爲什麼ClassCleanup屬性需要在靜態方法上?
- 28. 爲什麼需要將靜態方法封裝到類中?
- 29. 爲什麼要創建模擬對象?
- 30. 爲什麼這裏需要靜態
因爲......這就是關鍵字'靜態'意味着什麼?因爲標記一個方法「靜態」明確指出你不希望它附加到一個特定的對象? – 2013-04-26 05:15:36
因爲我們有一個類對象。 – StarPinkER 2013-04-26 05:16:10