아이템 17. 계승을 위한 설계와 문서를 갖추거나, 그럴수 없다면 계승을 금지하라.
##
- 메서드를 재정의하면 무슨일이 생기는지 정확하게 문서로 남겨야 함. 즉, 재정의 가능 메서드(public, protected로 선언된 non-final 메서드)를 내부적으로 어떻게 사용하는지 반드시 문서로 남겨야 한다.
- 문서만 제대로 썻다고 계승에 적절한 설계가 되지는 않는다. 너무 애쓰지 않고도 효율적인 하위 클래스를 작성할 수 있도록 하려면, 클래스 내부 동작에 개입할 수 있는 훅(hooks)을 할수 있도록, protected 메서드 형태로 제공해야 한다.
- 계승을 위해 설계한 클래스를 테스트할 유일한 방법은 하위 클래스를 직접만들어 보는 것이다.
- 내부적으로 재정의 가능 메서드를 사용하는 경우를 완전히 제거하자. 특히 생성자에서 호출하는 것은 매우 위험하다.