아이템19 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라
Effective Java 3e 아이템 19를 요약한 내용 입니다.
protected void removeRange(int fromIndex, int toIndex)
...
이 리스트는 혹은 이 리스트의 부분리스트에 정의된 clear 연산이 이 메서드를 호출한다. 그렇다면 상속용 클래스를 설계할 때 어떤 메서드를 protected로 노출해야 할지는 어떻게 결정할까?
상속용으로 설계한 클래스는 배포 전에 반드시 하위 클래스를 만들어 검증해야 한다.
public class Super {
public Super() {
overrideMe();
}
public void overrideMe() { ... }
}
public final class Sub extends Super {
Sub() {
instant = Instant.now();
}
@Override
public void overrideMe() {
System.out.println(instant);
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.overrideMe();
}
}그렇다면 그 외의 일반적인 구체 클래스는 어떨까?
정리
Last updated