這一節(jié)例子里main函數(shù)的代碼中
這一節(jié)的例子里的num3作為一個(gè)靜態(tài)變量為什么可以被直接調(diào)用,既沒(méi)有通過(guò)類(lèi)名調(diào)用也沒(méi)有通過(guò)對(duì)象名調(diào)用
這一節(jié)的例子里的num3作為一個(gè)靜態(tài)變量為什么可以被直接調(diào)用,既沒(méi)有通過(guò)類(lèi)名調(diào)用也沒(méi)有通過(guò)對(duì)象名調(diào)用
2017-08-19
舉報(bào)
2017-08-26
因?yàn)閙ain方法就是靜態(tài)的,public static void main(String[] args),里面有static,?靜態(tài)方法中可以直接調(diào)用同類(lèi)中的靜態(tài)成員。
2017-08-19
找到 ?Java中的static使用之靜態(tài)方法 ?這節(jié)課中
有這樣一句話(huà), 靜態(tài)方法中可以直接調(diào)用同類(lèi)中的靜態(tài)成員。 但不能直接調(diào)用非靜態(tài)成員?
上圖:
2017-08-19
靜態(tài)方法實(shí)際是類(lèi)的方法,而不是關(guān)于對(duì)象的方法。所以不是“可以不通過(guò)對(duì)象調(diào)用方法”,而是恰恰應(yīng)該使用類(lèi)來(lái)調(diào)用,而且鼓勵(lì)這種寫(xiě)法,而不是通過(guò)對(duì)象調(diào)用。即:靜態(tài)方法不和對(duì)象相關(guān),而是僅僅和類(lèi)相關(guān)。為啥呢?解釋是這樣的:在一般的類(lèi)中定義的方法中,非靜態(tài)類(lèi)其實(shí)不僅僅有他們后面括號(hào)里面的顯式參數(shù)(比如 public int getField(String param1, int param2)這個(gè)方法,顯式參數(shù)是param1和param2),還包括一個(gè)隱式參數(shù):即這個(gè)調(diào)用方法的對(duì)象(即this)。而靜態(tài)方法,則沒(méi)有這個(gè)隱式的參數(shù),僅僅就只有括號(hào)中的顯式參數(shù)。既然是因?yàn)殪o態(tài)方法不和對(duì)象關(guān)聯(lián),那么它就只能用同樣僅僅和類(lèi)關(guān)聯(lián)而不和對(duì)象關(guān)聯(lián)的實(shí)例域,畢竟不是靜態(tài)的實(shí)例域在不同對(duì)象中基本上都是不同的嘛。