내부 클래스
- 클래스 안의 클래스
- 종류
- 멤버 클래스 : 하나의 멤버로써 정의, 어디서든 사용 가능
- 로컬 클래스 : 메서드 안에서 정의, 메서드 내에서만 사용
내부 클래스 예시
public class Outer {
// 멤버 클래스
static class Inner {
void inner() {
System.out.println("inner");
}
}
// 멤버 클래스
class Inner2 {
void inner() {
System.out.println("inner2");
// 로컬 클래스
class Inner3 {
void inner() {
System.out.println("inner");
}
}
}
}
}
public class InnerMain {
public static void main(String[] args) {
Outer.Inner inner = new Outer.Inner();
inner.inner();
Outer outer = new Outer();
Outer.Inner2 inner2 = outer.new Inner2();
inner2.inner();
}
}
- 컴파일 시 내부 클래스도 클래스이기 때문에 $ 기호로 구분되어 개별적으로 클래스 파일이 생성된다.