객체 생성시 즉, 캐스팅 관계는 다음과 같다.

부모를 두고 자식이 부모 = 자식, 부모 = 부모, 자식 = (자식)부모 캐스팅 가능하나 자식 = 부모 캐스팅은 안된다.

이것은 OOP를 해 본 사람이라면 당연히 알 것이다.

이 글을 쓴 것도 훈스에 놀러 갔다가 퇴근5분전 님이 올린 댓글을 보고 그냥 생각나서 끄적여 본다.

흔히들 패턴에 맞춰서 코드를 생성하다 보면 함정에 빠진다.

당연히 1번과 2번의 관계면 생성 되서 다형성 형태로 만들 수 있겠지 하는 그런 생각.

그렇다고 함정에 빠지는 사람이 많다고 생각하지 않는다. 상속 관계를 어느정도 이해를 하는 사람들은...

하지만 다형성을 구현하고 할 경우에는 항상 숙지 해 둬야한다고 생각한다.
템플릿 메소드 패턴..

간단히 정리하면 다음과 같았다

알고리즘의 일부를 서브 클래스에서 구성하는 것.

상위에서 구성되어있는 일부를 하위에서 의존적으로 구성한다..

라는 뜻인 것 같다.

고정적으로 구현되어 있는 알고리즘에 서브에서 기존의 내용을 오버라이딩하면서

또 다른 결과물을 얻는 것이 편한 것 같기는 한데..

구성이 아닌 상속에 의한 의존도가 너무 쎄다..

하지만 프레임워크 작성에는 도움이 될 것 같다.