중첩 클래스, 내부 클래스란?
클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이를 중첩 클래스(Nested Class) 라 한다.
class Outer {
...
class Nested{
...
}
}
중첩 클래스의 분류
- 정적 중첩 클래스
- 내부 클래스
- 내부 클래스
- 지역 클래스
- 익명 클래스
=> 중첩 클래스와 내부 클래스로 분류한다. 둘의 차이는 무엇일까?
중첩은 나의 안에 있지만 내 것이 아닌 것을 말한다. 단순히 위치만 안에 있는 것이다. 반면 내부는 나의 내부에서 나를 구성하는 요소이다 .
여기서 중첩(Nested)과 내부(Inner)를 분류하는 핵심은 바깥 클래스의 입장에서 볼 때 안에 있는 클래스가 나의 인스턴스에 소속이 되는가 되지 않는가의 차이이다.
정적 중첩 클래스는 바깥 클래스와 다른 클래스이므로, 바깥 클래스의 인스턴스에 소속되지 않는다. 내부 클래스는 바깥 클래스를 구성하는 요소이므로, 바깥 클래스의 인스턴스에 소속된다.
중첩 클래스는 언제 사용하는가?
특정 클래스가 다른 하나의 클래스 안에서만 사용되거나, 둘이 긴밀하게 연결되어 있는 경우에만 사용해야 한다. 외부의 여러 클래스가 특정 중첩 클래스를 사용한다면 중첩 클래스로 만들면 안된다.
중첩 클래스를 사용하는 이유
- 논리적 그룹화: 특정 클래스가 하나의 클래스 안에서만 사용되는 경우 해당 클래스 안에 포함하는 것이 논리적으로 더 그룹화 된다.
- 캡슐화: 중첩 클래스는 바깥 클래스의 private 멤버에 접근할 수 있다. 이렇게 해서 둘을 긴밀하게 연결하고 불필요한 public 메서드를 제거할 수 있다.
* 인프런 '스프링 핵심 원리 -기본편' 강의를 참고하여 작성했습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 중급] 정적 중첩 클래스의 활용 (0) | 2024.09.03 |
---|---|
[Java 중급] 정적 중첩 클래스 (0) | 2024.09.03 |
[Java 중급] 열거형 - Enum Type (4) | 2024.08.29 |
[Java 중급] 타입 안전 열거형 패턴 (0) | 2024.08.29 |
[Java 중급] 열거형 - ENUM (0) | 2024.08.23 |