✅ 1. 중첩 클래스 종류 및 특징
유형 |
설명 |
선언 위치 |
접근 |
인스턴스 멤버 클래스 |
외부 클래스의 인스턴스 멤버로 선언 |
클래스 내부 |
외부 클래스 인스턴스 필요 |
정적 멤버 클래스 (static) |
정적 멤버로 선언됨 |
클래스 내부 |
외부 클래스 인스턴스 없이 접근 |
로컬 클래스 |
생성자나 메서드 내부에 정의 |
메서드/생성자 내부 |
해당 블록 내에서만 사용 가능 |
익명 클래스 |
클래스 선언 없이 즉석에서 구현 |
인스턴스 생성과 동시에 구현 |
일회용 용도로 사용 |
✅ 2. 내부 클래스 주요 예시
A.B b = a.new B();
A.B b = new A.B(); // 외부 클래스 인스턴스 없이 사용 가능
void method() {
class B { ... }
B b = new B();
}
this.field // 내부 클래스의 필드
A.this.field // 외부 클래스의 필드
- 내부에서 인터페이스 정의 후 콜백 형태로 사용
- 실제 예시: Button.ClickListener 구현
btn.setClickListener(new ClickListener() {
public void onClick() { ... }
});
- 인터페이스를 구현하면서 객체 이름 없이 직접 생성
RemoteControl rc = new RemoteControl() {
public void turnOn() { ... }
public void turnOff() { ... }
};
🧩 사용 위치별 예시
위치 |
동작 예시 |
필드 |
TV 제어 |
메서드 내부 |
에어컨 제어 |
메서드 매개변수 |
난방 제어 |
🧠 19일차 핵심 요약
개념 |
설명 |
중첩 클래스 |
클래스 내부에 선언된 클래스 (멤버, 정적, 로컬, 익명) |
접근 규칙 |
정적 클래스는 static 멤버만 접근 가능 |
익명 구현 객체 |
인터페이스나 추상 클래스의 일회성 구현 |
this / A.this |
내부/외부 클래스 멤버 구분 |
UI 이벤트 처리 |
중첩 인터페이스를 활용한 리스너 등록 방식 |