멘토링

내부 클래스

langsamUndStetig 2022. 7. 7. 17:08

1. 내부 클래스는 언제 사용할까?


- 한 곳에서만 사용되는 클래스들을 논리적으로 묶는 방법이다.
- 캡슐화를 증가시킨다. 예를 들어 A 클래스에 private로 설정된 멤버에 접근해야 하는 B 클래스가 있을 때, B를 A의 내부 클래스로 만듦으로써 A의 멤버는 private로 유지할 수 있고, B는 A의 멤버들에 접근할 수 있다. 또한 B 클래스는 외부에서 볼 수 없게 된다.
- 가독성이 좋고 유지성이 좋은 코드를 만들 수 있다.
- 만약 외부 클래스의 멤버들에 접근할 필요가 없으면, static 내부 클래스로 만들어 메모리 공간을 적게 사용할 수 있다.

- 외부 클래스가 있음에도, 내부 클래스에 계속 접근해야 한다면 차라리 내부에서 빼내는게 나을 수 있다.

 


2. 내부 클래스와 상속의 차이는?


- 내부 클래스는 자손 클래스와 달리 같은 파일에 존재한다. (자손 클래스는 다른 파일 혹은 다른 패키지에 있을 수 있다.)
- 내부 클래스의 객체는 외부 클래스의 객체가 없을 때는 만들 수 없다. (inner class고, static inner class는 조금 다름, 외부 클래스 객체없이 생성가능)
- 내부 클래스의 대표적인 예는 Node 클래스를 내부 클래스로 사용하는 LinkedList다. 내부 클래스는 외부 클래스가 필요로 하며 내부적 기능과 연관되어 있고, 다른 클래스에선 필요로 하지 않을 떄 사용 한다.
- 자손 클래스는 is-a 관계다. 예를 들어 다양한 종류의 차를 만들고 싶을 때, 공통 특성과 기능을 가진 추상 클래스를 하나 만들고, 세부적인 부분은 자손 클래스로 확장하여 각 차 클래스를 만들 수 있다.