Java常考面試題11 內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?
阿新 • • 發佈:2018-12-26
問:內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?
答:
完全可以。如果不是靜態內部類,那沒有什麼限制!
如果你把靜態巢狀類當作內部類的一種特例,那在這種情況下不可以訪問外部類的普通成員變數,而只能訪問外部類中的靜態成員
舉例:
class OuterMyTest { static int i = 1; int j = 2; class Test { void getFun() { System.out.println(i); System.out.println(j); } } public static void main(String[] args) { OuterMyTest outerMyTest = new OuterMyTest(); Test interTest = outerMyTest.new Test(); interTest.getFun(); } }
執行結果:1 2
class OuterMyTest { static int i = 1; int j = 2; static class Test { void getFun() { System.out.println(i); System.out.println(j); //編譯報錯,靜態內部類只能訪問靜態成員} } public static void main(String[] args) { Test interTest = new Test(); interTest.getFun(); } }
編譯報錯:Cannot make a static reference to the non-static field j
靜態內部類只能訪問靜態成員!!!!