關(guān)于內(nèi)部類靜態(tài)成員的問題
public?class?StatiClass?{ static?int?age=100; private??int?c=89; public?static?void?main(String[]?args)?{ StatiClass?o=new?StatiClass(); System.out.println(o.c); new?A().a(); } public??class?A{//這個地方會報錯,請問為什么內(nèi)部內(nèi)中有靜態(tài)成員,內(nèi)部類就一定得是靜態(tài)修飾的類? static?int?age=100; String?name="張三"; public?void?a(){ System.out.println(name+"會活到"+age+"歲,那時候是"+StatiClass.age+"個奇跡"); } } }
2016-10-30
一般情況下,如果一個內(nèi)部類不是被定義成靜態(tài)內(nèi)部類,那么在定義成員變量或者成員方法的時候, 是不能夠被定義成靜態(tài)成員變量與靜態(tài)成員方法的。也就是說,在非靜態(tài)內(nèi)部類中不可以聲明靜態(tài)成員。如現(xiàn)在在一個student類中定義了一個內(nèi)部類 age,如果沒有將這個類利用static關(guān)鍵字修飾,即沒有定義為靜態(tài)類,那么在這個內(nèi)部類中如果要利用static關(guān)鍵字來修飾某個成員方法或者成員 變量是不允許的。在編譯的時候就通不過。
2016-10-30
會報錯是因為你在非靜態(tài)內(nèi)部類中定義了靜態(tài)變量。
2016-10-30
那為什么主函數(shù)main方法可以有static?
2016-10-30
?new?A().a();這段就有問題,只有靜態(tài)內(nèi)部類才能這樣調(diào)用
2016-10-30
這樣想,靜態(tài)類或靜態(tài)成員沒有new之前就已經(jīng)加載了,而普通類,只有new創(chuàng)建對象的時候才會加載,兩者出現(xiàn)的先后順序就有沖突