class A {
class B {
}
}
class Outer {
private static String s = "S";
private String i = "I";
static class SNest {
void print() {
System.out.println(s); // OK: static 멤버 접근[web:7]
// System.out.println(i); // 컴파일 에러: 인스턴스 멤버 직접 접근 불가[web:4]
}
}
class Inner {
void print() {
System.out.println(s); // OK: static 멤버 접근[web:7]
System.out.println(i); // OK: 외부 인스턴스 멤버 접근[web:7]
}
}
}
class Main {
public static void main(String[] args) {
// static nested class: 외부 인스턴스 없이 생성
Outer.SNest a = new Outer.SNest();
a.print(); // "S" 출력[web:7]
// inner class: 외부 인스턴스 필요
Outer outer = new Outer();
Outer.Inner b = outer.new Inner();
b.print(); // "S", "I" 출력[web:7]
}
}
Static nested class
Non- static nested class (Inner class)
Local class
Anonymous inner class
