Объяснение в контексте обычного внутреннего класса [Обычные внутренние классы не могут иметь статические члены, объявленные внутри них]
Вы можете получить доступ к любому полю внешнего класса из внутреннего класса напрямую .
class Outer {
private static int x = 0;
class Inner {
void print() {
System.out.println(x); // x can be directly accessed
}
}
public static void main(String[] args) {
new Outer().new Inner().print();
}
}
Четный Outer класс может получить доступ к любому полю внутреннего класса, но через объект внутреннего класса.
class Outer {
private class Inner {
private int x = 10;
}
void print() {
Inner inner = new Inner();
System.out.println(inner.x);
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.print();
}
}