
아키텍처
코드 품질 개선 기법 28편: 제약 조건에도 상속세가 발생한다
두줄요약
상속 가능한 불변 클래스는 자식 클래스에서 불변성을 깨뜨릴 수 있어 주의가 필요했습니다. 불변성을 보장하려면 상속을 막고 읽기 전용 공통 타입을 사용하는 방식이 안전했습니다.
핵심 내용
ImmutableIntList처럼 불변성을 의도한 클래스도 상속 가능하면 자식 클래스에서 가변적으로 변형될 수 있는 위험private필드로 내부 배열을 숨겨도get같은 메서드 오버라이드로 불변성 우회 가능- 가변 객체와 불변 객체는 상속 관계를 피하고, 공통 부모가 필요하면 읽기 전용 타입을 두는 설계 선호