티스토리 뷰

계승을 위한 설계와 문서를 갖추지 않은 '이질적(foreign)' 클래스의 하위 클래스를 만들 때 생기는 문제점을 설명하고 있다. 그렇다면 계승을 위한 설계와 문서를 갖춘다는 것은 어떤 의미일까?

상속을 위한 문서에는 재정의 가능 메서드를 내부적으로 어떻게 사용하는지(self-use) 반드시 문서에 남기라는 것이다. public이나 protected로 선언된 모든 메서드와 생성자에 대해, 어떤 재정의 가능 메서드를 어떤 순서로 호출되는지, 그리고 호출 결과가 추후 어떤 영향을 미치는지 문서로 남기라는 것이다.

클래스 내부 동작에 개입할 수 있는 훅(hooks)을 신중하게 고른 protected 메서드 형태로 제공해야 한다. protected 멤버 개수는 가능한 줄여야 한다. 너무 적으면 상속해서 쓰기에 문제가 생길 수 있다. 계승을 위해 설계한 클래스를 테스트하여면 하위 클래스를 직접 만들어서 테스트해봐라.

생성자는 재정의 가능 메서드를 호출해서는 안된다. 상위 클래스 생성자는 하위 클래스 생성자 보다 먼저 실행되므로 하위 클래스에서 재정의한 메서드는 하위 클래스가 실행되기 전에 호출된다.

clone이나 readObject 메서드 안에서 직접적이건 간접적이건 재정의 가능한 메서드를 호출하지 않도록 주의해야 한다. 계승을 위한 클래스를 설계하면 클래스에 상당한 제약이 가해진다. 그렇기 때문에, 되도록이면 클래스는 final로 선언하고 멤버는 private로 하여 확장을 막아야 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함