1. 程式人生 > >Java常考面試題11 內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?

Java常考面試題11 內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?

問:內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?

答:

完全可以。如果不是靜態內部類,那沒有什麼限制!
如果你把靜態巢狀類當作內部類的一種特例,那在這種情況下不可以訪問外部類的普通成員變數,而只能訪問外部類中的靜態成員
      舉例:
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
靜態內部類只能訪問靜態成員!!!!