중첩 클래스

[참고: https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html]

class OuterClass {
    ...
    class NestedClass {
        ...
    }
}

정적 멤버 클래스

public class OuterClass {
	String outerField = "Outer field";
	static String staticOuterField = "Static Outer Field";
	
	static class StaticNestedClass {
		void accessMembers() {
			System.out.println(outerfield); // 컴파일 에러 !!! 
			System.out.println(staticOuterField);
		}
	}
}
public class OuterClass {
	private String outerField = "Outer field";
	private static String staticOuterField = "Static Outer Field";
	
	private static class StaticNestedClass {
		void accessMembers(OuterClass outerClass) {
			System.out.println(outerClass.outerField); // outer class의 instance 참조하여 접근
			System.out.println(staticOuterField);
		}
	}
	public static void main(String[] args) {
		OuterClass oc = new OuterClass();
		StaticNestedClass snc = new StaticNestedClass();
		snc.accessMembers(oc);
	}
}