중첩 클래스(Nested Class)
- 중첩 클래스는 클래스 내부에 선언되는 클래스를 똣합니다.
- 객체의 관계가 종속적인 관계이거나 특정 객체와만 상호 작용을 할 때 내부 클래스를 사용하여 표현합니다.
- 중첩 클래스는 내부 클래스(Inner Class) 라고도 불리는데, 혼용되는 경우도 있지만 엄격하게 분리하여 사용하는 경우도 있습니다.
- 내부 클래스(= 인스턴스 멤버 클래스): 바깥 클래스에서 멤버 변수처럼 사용되는 클래스
- 중첩 클래스(= 스태틱 멤버 클래스): 정적(static)으로 선언되어 바깥 클래스와 독립적으로 사용할 수 있는 클래스
- 지역 클래스: 메서드 내에 선언되는 클래스로 메서드가 실행될 때만 사용할 수 있는 클래스
- 내부 클래스도 하나의 클래스이기 때문에 컴파일시 바이트코드 파일(.class)이 생성됩니다.
- 컴파일 시 생성되는 바이트코드 파일의 이름은 아래와 같이 생성됩니다.
- 내부 클래스, 중첩 클래스일 경우: 바깥클래스이름 $ 중첩클래스이름 .class
- 로컬 클래스일 경우: 바깥클래스이름 $1 중첩클래스이름 .class
중첩 클래스의 분류
- 내부 클래스는 선언 방식과 위치에 따라서 아래와 같이 구분됩니다.
- 인스턴스 멤버 클래스(내부 클래스): 특정 클래스의 멤버로 선언된 클래스를 뜻합니다.
- 스태틱 멤버 클래스(중첩 클래스): 특정 클래스의 정적 멤버로 선언된 클래스를 뜻합니다.
- 로컬 클래스(지역 클래스): 특정 클래스의 메서드 내에 선언된 클래스를 뜻합니다.
인스턴스 멤버 클래스 선언 방법
접근제어자 class 클래스이름 {
접근제어자 class 내부클래스이름 {
클래스 요소 ...
}
...
}
스태틱 멤버 클래스 선언 방법
접근제어자 class 클래스이름 {
접근제어자 static class 중첩클래스이름 {
클래스 요소 ...
}
...
}
로컬 클래스 선언 방법
접근제어자 class 클래스이름 {
// 생성자
접근제어자 클래스이름(매개변수) {
class 로컬클래스이름 {
클래스 요소 ...
}
}
// 메서드
접근제어자 리턴타입 메서드이름(매개변수) {
class 로컬클래스이름 {
클래스 요소 ...
}
}
...
}
'Programing Language > Java' 카테고리의 다른 글
[Java] 익명 클래스(Anonymous Class) (0) | 2022.07.10 |
---|---|
[Java] 중첩 클래스의 분류(Separation of Nested Class) (0) | 2022.07.09 |
[Java] 인터페이스의 요소(Member of Interface) (0) | 2022.07.08 |
[Java] 인터페이스(Interface) (0) | 2022.07.06 |
[Java] 인터페이스의 상속 및 다형화(Interface Inheritance & Polymorphism) (0) | 2022.07.06 |