tonykang22 / study

0 stars 0 forks source link

[이펙티브 자바] 아이템 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라. #144

Open tonykang22 opened 1 year ago

tonykang22 commented 1 year ago

아이템 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라.

핵심 정리



Javadoc 생성

image

오류 발생: Tag 정보를 모르기 때문에 발생한 오류



javadoc -d target/apidoc src/main/java/me/whiteship/chapter04/item19/impespec/* -tag "implSpec:a:Implementation Requirements:"

Tag 명시



image

image

올바르게 적용됨을 확인



재정의 가능 메서드를 호출하는 생성자

public class Super {
    // 잘못된 예 - 생성자가 재정의 가능 메서드를 호출한다.
    public Super() {
        overrideMe();
    }

    public void overrideMe() {
    }
}
public final class Sub extends Super {
    // 초기화되지 않은 final 필드. 생성자에서 초기화한다.
    private final Instant instant;

    Sub() {
        instant = Instant.now();
    }

    // 재정의 가능 메서드. 상위 클래스의 생성자가 호출한다.
    @Override public void overrideMe() {
        System.out.println(instant);
    }

    public static void main(String[] args) {
        Sub sub = new Sub();
        sub.overrideMe();
    }
}