1. 程式人生 > >Java複習筆記之內部類的呼叫問題

Java複習筆記之內部類的呼叫問題

有三個主要疑問

 1.在外部類Out中能否使用inner中定義的區域性變數  ?  2.靜態內部類可以在不建立外部物件的情況下引用它,是指不用建立Inner的例項物件了嗎?  3.靜態內部類可以定義靜態成員,也可以定義非靜態成員嗎?

答案是

 1.測試在外部類Out中能否使用inner中定義的臨時變數  成功  2.靜態內部類可以在不建立外部物件的情況下引用它,是指不用new Out()了,並不是指不建立Inner的例項物件  3.靜態內部類可以定義靜態成員,也可以定義非靜態成員

測試程式碼如下

1.外部類Out中能否使用inner中定義的區域性變數  ?

class Out {         int c = 1;     void test(){         Inner inner = new Inner();       //  inner.a = 10;//也可以修改內部類中的臨時變數         System.out.println(inner.a);//呼叫內部類裡定義的臨時變數     }      class Inner{             int a = 2;         }     }

public class Test{     public static void main(String[] args) {        Out out = new Out();         inner.show();     } }

2.靜態內部類可以在不建立外部物件的情況下引用它。

完全是語文題。靜態類引用它可以在不建立外部物件的情況下,即不用new Out()了,但是仍需要例項化內部類

最後演變為 Out.Inner in = new Out.Inner();

3.靜態內部類可以定義靜態成員,也可以定義非靜態成員嗎?

Out{

static int b = 2;

static Inner{

      int a = 5;

      void show(){                 System.out.println("b="+b+" a="+a);             }

}

}

程式設計時沒有出現報錯,而且輸出結果也是對的 a=5 b=2。

證明靜態內部類可以定義靜態成員,也可以定義非靜態成員。