2013-04-26 93 views
5

我知道爲什麼主要方法是靜態的。如果它是靜態的,則不需要由JVM實例化該類。沒有對象,我們可以稱之爲。但爲什麼不需要調用靜態方法?爲什麼我們不需要爲靜態方法創建對象?

任何人都可以解釋一下嗎?

+1

因爲......這就是關鍵字'靜態'意味着什麼?因爲標記一個方法「靜態」明確指出你不希望它附加到一個特定的對象? – 2013-04-26 05:15:36

+1

因爲我們有一個類對象。 – StarPinkER 2013-04-26 05:16:10

回答

0

對象是成員變量和方法需要的,但靜態是應用程序變量或函數這是靜態不需要對象的原因之一。

0

因爲JVM可以調用該方法適合你(但它認爲合適)。否則,兔子洞在哪裏結束?他們本可以通過創建一個已知的interface完成你的建議,本身的方法是main。例如:

interface ApplicationStarter 
{ 
    void start(String []args); 
} 

但是那裏有關於構造函數。存在許多類似的問題的框架,比如SPI,出於類似的原因需要默認的(無參數)構造函數。當這些框架的預先要求(例如,沒有參數的構造函數,或者對於其他一些框架可能不是)以及初學者覺得這很難時,這樣的框架就會失敗。將應用程序的最基本部分「複雜化」並不是實現採用的好方法。

對於應用程序的開始/入口點,依賴於類似於幾乎所有其他語言的已知入口點(main)要容易得多:不要擔心對象不構造或覆蓋。

0

main()方法是靜態的,因爲它們可以被運行時引擎調用,而不必實例化父類的實例。

Static方法,這在他們的聲明中的static修飾符,應該用類名來調用,而無需創建類

4

的一個實例,考慮這個例子,有含有母親的家庭和三個孩子。母親爲每個孩子帶來三個冰淇淋球,但三個孩子只帶一個PSP。所有的孩子都使用相同的PSP,但他們有自己的冰淇淋。

這裏冰淇淋是一個非靜態的東西(方法/變量),PSP是靜態的東西,母親是班級,孩子是物體。

這很簡單。靜態屬於一個類,它對於一個類的所有對象都是常見的。非靜態事物是特定於對象的。

0

是的,你是正確的,你不需要一個實例對象來調用一個類的靜態方法,因爲靜態方法屬於一個類,而不是該類的實例。此外,您不能在靜態方法內使用實例變量,因爲實例變量屬於該實例。

0

當我們執行一個java文件時,一個java編譯器會自動加載並執行靜態成員。

我是新來的java所以請原諒我,如果我的回答是錯誤的。

相關問題