Effective Java 04 - item 18 -

상속보다는 컴포지션을 사용하라

어떻게 보면 당연한 이야기이다.

상속은 자바에서 잘못 만들어진 기능이며 이를 통해 클래스를 확장해 나가는 것은 설계를 더 어렵게 만든다.

상속은 캡슐화를 깨뜨리는 주범이다.

상위 클래스에 의존적일 수 밖에 없기 때문에 상위 클래스가 바뀌면 하위 클래스의 동작에 문제가 생길 수 있다.

이러한 상속 구조를 피해갈 수 있는 묘안이 바로 컴포지션이다.

이 컴포지션은 기존 클래스가 새로운 클래스를 자신의 구성요소로 사용하는 설계기법을 의미한다.

컴포지션은 기존 클래스의 결함을 숨기는 새로운 API를 설계해볼 수 있지만, 상속은 상위 클래스의 API를 결함까지도 승계하기 떄문에 변경을 더 어렵게 만든다.

상속은 가급적 상위, 하위가 순수한 is-a 관계일 때만 사용하는 편이 좋다.

Reference

스크린샷 2021-04-16 오후 4 24 23

이펙티브 자바 Effective Java 3/E

조슈아 블로크



© 2022. by minkuk

Powered by minkuk