[Effective Java] 상속보다는 컴포지션을 사용하라


[Effective Java] 상속보다는 컴포지션을 사용하라

상속보다는 컴포지션을 사용하라 상속은 코드를 재사용하는 강력한 수단이나 항상 최선은 아니다. 잘못 사용하면 오류를 만들어내기 쉽다. 상위 클래스와 하위 클래스를 모두 같은 프로그래머가 통제하는 패키지 안에서 사용하면 상속도 안전하다. 하지만 일반적인 구체 클래스를 패키지 경계를 넘어, 즉 다른 패키지의 구체 클래스를 상속하는 일은 위험하다. 이번 챕터에서의 상속은 클래스가 다른 클래스를 확장하는 구현 상속을 말한다. 문제점 메서드 호출과 달리 상속은 캡슐화를 깨뜨린다. 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있다. 다음 릴리스에서 상위 클래스에 새로운 메서드를 추가하면 어떻게 될까? 컬렉션에 추가된 모든 원소가 특정 조건을 만족해야만 하는 프로그램을 생각 컬렉션을 상속하여 원솔ㄹ 추가하는 모든 메서드를 재정의해 필요한 조건을 먼저 검사 하지만 이 방식은 상위 클래스에 또 다른 원소 추가 메서드가 만들어지기 전까지만 통한다. 두 문제 모두 메서드 ...


#effectivejava #이펙티브자바 #자바

원문링크 : [Effective Java] 상속보다는 컴포지션을 사용하라