이펙티브자바 아이템18
-
아이템18. 상속보다는 컴포지션을 사용하라책/이펙티브자바 2021. 8. 15. 13:03
들어가기 상속보다는 컴포지션을 사용해래 컴포지션이 상속받을 클래스를 필드로 넣어서 사용하는걸 컴포지션이라고 부르는거 같던데 맞나 ? 일단 상속보다 컴포지션이 좋은점이 있으니까 그러라고 하는거겠지 ? 왜 그런지 알아보자. 상속의 단점 상속은 캡슐화를 깨뜨린다. 상위 클래스가 어떻게 구현하느냐에 따라 하위클래스의 동작에 이상이 생길 수 있다. 상위 클래스는 릴리스마다 내부 구현이 달라질 수 있는데, 그 여파로 코드를 안건드린 하위 클래스가 오동작 할 수 있다는 것이다. 예를들어 HashSet 을 사용하는 프로그램이 있는데 여기서 추가적으로 처음 생성된 이후 원소가 몇 개 더해져있는지 알수있어야 하는 클래스가 필요하다고 할게. 그래서 HashSet을 상속받은 InstrumentedHashSet 을 만들어서 사..