반응형
이번 글에서는 중첩 클래스(Inner Class) 중에서도
인스턴스 멤버 클래스(Instance Member Class) 에 대해 학습합니다.
이 클래스는 외부 클래스의 인스턴스 멤버와 밀접하게 연결된 구조를 가질 수 있습니다.
📦 외부 클래스 (A.java)
package ch09.sec02.exam01;
public class A {
class B { } // 인스턴스 멤버 클래스
B field = new B(); // A의 인스턴스 멤버에서 B 사용
A() {
B b = new B(); // 생성자에서 B 객체 생성 가능
}
void method() {
B b = new B(); // 메서드에서도 생성 가능
}
}
✔ B는 A 내부에 선언된 인스턴스 멤버 클래스
✔ A의 객체가 생성되어야만 사용할 수 있음
📌 실행 클래스 (AExample.java)
package ch09.sec02.exam01;
public class AExample {
public static void main(String[] args) {
A a = new A(); // A 객체 생성
A.B b = a.new B(); // A 객체를 기반으로 B 객체 생성
}
}
💻 실행 결과
(출력 내용 없음 — 컴파일 및 런타임 오류 없이 객체 생성됨)
💬 코드 설명
- class B는 class A의 인스턴스 멤버 클래스
→ 정적(static)이 아님 → A의 인스턴스가 있어야 생성 가능 - a.new B()
→ A 객체를 통해서만 내부 클래스 B 객체 생성 가능 - 내부 클래스 B는 A 클래스의 필드, 생성자, 메서드 어디서든 사용 가능
📌 간단 정리
항목 | 내용 |
선언 위치 | 클래스 A 내부 (정적 아님) |
객체 생성 방식 | A a = new A(); A.B b = a.new B(); |
외부 클래스 접근 | A의 인스턴스 멤버에 접근 가능 |
사용 목적 | 외부 클래스와 논리적으로 강하게 연결된 구조 구현용 |
💡 포인트 정리
- 인스턴스 멤버 클래스는 외부 클래스 객체가 존재해야만 생성 가능
- 외부 클래스의 필드나 메서드에 자유롭게 접근 가능
- 주로 외부 클래스의 기능을 도와주는 부가적인 클래스를 만들 때 사용
- 내부 클래스를 사용하면 캡슐화 강화, 코드 응집력 증가
📌 정리하자면,
인스턴스 멤버 클래스는 외부 클래스의 멤버처럼 동작하면서도
클래스 안에서 논리적인 구조를 정돈할 수 있는 유용한 도구입니다.
'Java > 자바 정리' 카테고리의 다른 글
84. 정적 멤버 클래스의 활용 – 인스턴스와 static 멤버를 모두 가진 클래스 (0) | 2025.05.12 |
---|---|
83. 정적 멤버 클래스의 독립성 – 외부 인스턴스 없이 자유롭게 활용 (0) | 2025.05.12 |
82. 정적(static) 멤버 클래스 – 외부 객체 없이도 작동하는 중첩 클래스 (0) | 2025.05.12 |
80. 인터페이스와 람다식 – 익명 객체 대신 사용하는 간결한 표현 (2) | 2025.05.12 |
79. instanceof와 패턴 매칭 – 안전한 형변환과 실행 흐름 제어 (0) | 2025.05.09 |
78. 인터페이스 매개변수 활용 – 다양한 객체를 받아들이는 구조 (0) | 2025.05.09 |