내부 클래스
내부 클래스는 바깥 클래스의 인스턴스를 이루는 요소가 된다. 즉, 바깥 클래스의 인스턴스에 소속된다.
public class InnerOuter {
private static int outClassValue = 3;
private int outInstanceValue = 2;
class Inner {
private int innerInstanceValue = 1;
public void print() {
// 자기 자신의 인스턴스 변수에 접근
System.out.println(innerInstanceValue);
// 외부 클래스의 인스턴스 멤버에 접근 가능, private 접근 가능
System.out.println(outInstanceValue);
// 외부 클래스의 클래스 멤버에 접근 가능, private 접근 가능
System.out.println(outClassValue);
}
}
}
=> 바깥 클래스의 인스턴스, 클래스 멤버에 접근이 가능하다. 접근 제어자가 private 이라도 가능하다. 외부 클래스에 소속되기 때문이다.
Main.java
public class InnerOuterMain {
public static void main(String[] args) {
InnerOuter outer = new InnerOuter();
InnerOuter.Inner inner = outer.new Inner();
inner.print();
System.out.println("innerClass =" + inner.getClass());
}
}
=> 내부 클래스는 바깥 클래스의 인스턴스 정보를 알아야 생성할 수 있다.
객체 생성 방법이 특이하므로 주의하자. new 바깥클래스의 인스턴스 참조.내부클래스() 로 생성할 수 있다.
실행결과

=> 실제로 내부 인스턴스가 바깥 인스턴스에 생성되는 것은 아니다. 내부 인스턴스는 바깥 인스턴스의 참조를 보관한다. 이 참조를 통해 바깥 인스턴스의 멤버에 접근할 수 있는 것이다.
* 인프런 '김영한의 실전 자바 - 중급 1편'을 참고하여 작성하였습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 중급] 정적 중첩 클래스의 활용 (0) | 2024.09.03 |
---|---|
[Java 중급] 정적 중첩 클래스 (0) | 2024.09.03 |
[Java 중급] 중첩 클래스, 내부 클래스 (0) | 2024.09.03 |
[Java 중급] 열거형 - Enum Type (4) | 2024.08.29 |
[Java 중급] 타입 안전 열거형 패턴 (0) | 2024.08.29 |