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。
證明靜態內部類可以定義靜態成員,也可以定義非靜態成員。