반응형
Nested class (Static inner class)
중첩 클래스는 다른 클래스의 내부에서 멤버로 정의된 클래스이다.
Static 키워드가 사용된 내부 클래스와 동일한 것이다.
💻 예제
📝 소스 코드
- OuterClass { Nested Class }
public class OuterClass {
private int val; // 인스턴스 변수
private static int cnt = 1; // 클래스 변수 (static)
public OuterClass (int val) {
this.val = val;
}
// static inner class (Nested class)
public static class NestedClass {
public void displayOuterInfo() {
// System.out.println(val); <- 컴파일 오류
/* static 클래스에서는 외부 클래스의 'static이 아닌 멤버' 사용 불가 */
System.out.println(cnt);
}
public static int num = 10; // static을 삭제하면 num 변수 사용 시 오류 발생
public static void print() { // static을 삭제하면 print() 호출 시 오류 발생
System.out.println("num = " + num);
}
}
}
- Main
public class Main {
public static voiod main(String[] args) {
System.out.println("Nested Class(중첩 클래스) : static inner class\n");
OuterClass.NestedClass nest = new OuterClass.NestedClass();
nest.displayOuterInfo();
System.out.println(OuterClass.NestedClass.num);
OuterClass.NestedClass.print();
}
}
📄 실행 결과
static으로 선언된 내부 클래스 안에서는 static으로 선언된 변수와 메소드만 사용할 수 있다.
Inner class 개념
Member inner class 예제
Local inner class 예제
Anonymous class 예제
반응형