Effective Java #19 - 상속용 클래스 고려사항

업데이트:


클래스와 인터페이스 (4장)

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

상속용 클래스를 설계하려면 고려해야 할 사항이 많기 때문에 문서화를 철저히 해야하고, 상속용 클래스가 아니라면 상속을 금지하도록 설계해야 한다.

요약

  • 상속용 클래스를 설계하려면 아래와 같은 제약사항들이 따른다.
    • 배포전에 하위 클래스를 만들어 검증해야 한다.
    • 상속용 클래스의 생성자는 직접적, 간접적으로든 오버라이드 메서드를 호출해서는 안된다.
  • 그렇기 떄문에 상속용으로 설계하지 않은 클래스는 상속을 금지해야 한다.
    • 클래스를 final로 선언하거나 생성자 모두를 외부에서 접근할 수 없도록 만들면 된다.

핵심 정리

  • 상속 관계에 있을 때 상위 클래스의 생성자가 하위 클래스 생성자보다 먼저 실행된다. 그렇기 때문에 상위 클래스의 생성자에서는 오버라이드 될 수 있는 메소드를 호출하면 안 된다.
  • 객체의 확장은 가능하면 상속이 아닌 wrapper class 패턴을 활용해서 구현하자.
  • 상속을 해야하는 경우에는 그에 맞춰 설계하고 문서화를 철저히 해야한다.

References

댓글남기기