중첩 클래스
- 클래스 내부에 선언한 클래스
- 장점
- 클래스의 멤버를 쉽게 사용 가능
- 코드의 복잡성을 줄일 수 있음
- 멤버 클래스 : 클래스의 멤버로서 선언되는 중첩 클래스
- 인스턴스 멤버 클래스 : A 객체를 생성해야만 B 객체를 생성할 수 있음
- 정적(static) 멤버 클래스 : A 객체를 생성하지 않아도 B 객체를 생성할 수 있음
- 로컬 클래스 : 메소드 내부에서 선언되는 중첩 클래스, 메소드가 실행할 때만 B 객체를 생성할 수 있음
class A {
class B { ...}
}
class A {
static class B { ... }
}
class A {
void method() {
class B { ... }
}
}
중첩 인터페이스
- 해당 클래스와 긴밀한 관계를 맺는 구현 객체를 만들기 위해 클래스의 멤버로 선언된 인터페이스
- 안드로이드와 같은 UI 프로그램에서 이벤트를 처리할 목적으로 많이 활용
class A {
// 중첩 인터페이스
[public | private] [static] interface B {
// 상수 필드
// 추상 메소드
// 디폴트 메소드
// 정적 메소드
}
익명 객체
- 이름이 없는 객체
- 필드값, 로컬 변수값, 매개변수값으로 주로 사용
익명 자식 객체
- 부모 클래스를 상속받아 생성되는 객체
- 부모 타입의 필드, 로컬 변수, 매개변수의 값으로 대입할 수 있음
new 부모생성자(매개값, ...) {
// 필드
// 메소드
}
익명 구현 객체
- 인터페이스를 구현해서 생성되는 객체
- 인터페이스 타입의 필드, 로컬변수, 매개변수의 값으로 대입할 수 있음
- 안드로이드와 같은 UI프로그램에서 이벤트를 처리하는 객체로 많이 사용
new 인터페이스() {
// 필드
//메소드
}