여러 클래스와 관계를 맺을 필요 없이, 어떠한 클래스 내부에서만 관계를 맺어도 된다면, 중첩 클래스를 사용하여 불필요한 관계를 감추고 높은 접근성을 얻을 수 있다.
public class Class {
class NestedClass {
}
interface NestedInterface {
}
}
주로 UI 프로그래밍에서 이벤트를 처리할 목적으로 많이 활용된다. UI 내부에 삽입되는 인터페이스 혹은 클래스는 주로 View 클래스 내부에 자리잡아서 View와만 관계를 맺게 된다.
public class Class {
class MemberClass { ... }
}
상위 객체를 생성해야만 사용 가능한 중첩 클래스이다. 내부에 정적 필드 혹은 메소드를 선언할 수 없다.
public class Class {
static class MemberClass { ... }
}
상위 객체가 인스턴스화되지 않아도 접근 가능한 중첩 클래스이다. 내부에 정적 필드 혹은 메소드 선언이 가능하다.
public class Class {
void method() {
class LocalClass { ... }
}
}
method()
가 실행될 때만 사용할 수 있는 중첩 클래스이다.public
, static
)와 static
을 붙일 수 없다.void method() {
class DownloadThread extends Thread { ... }
DownloadThread thread = new DownloadThread();
thread.start();
}