상속과 위임

I. 상속

 

- 자식 클래스가 한번 상속 받은 속성과 기능은 컴파일 이후 변경이 불가능, 프로그램 실행 후에는 유연하게 행동을 변경 못함(유지보수 복잡)

- 고어텍스 기능이 없는 등산화 하위클래스는 소스 수정(오버라이드) 필요, 코드 중복 발생

- 이 관계는 소스 코드를 고쳐 쓰지 않는 한 바꿀 수 없는 매우 견고한 연결로 프로그램의 필요에 따라서 클래스 간의 관계를  바꾸고 싶을 때 부적절

 

II. 위임

 

만약 K3-A등산화가 초강력 고어텍스 기능을 쓴다면, ‘실행클래스’에서 아래와 같이 쓸수 있다.
public static void main( String[] args ) throws Exception {
    …..
    // 실행 클래스는 K3A등산화를 생성할때 초강력 고어텍스 클래스를 인자로 넘겨주었다.
    MountainClimbingBoots k3aBoots = new K3AClimbingBoots(new UltraGoreTex());
    …...       
}

그런데 생산과정에서 다시 요구사항이 변경되어 K3-A등산화가 일반 ‘고어텍스’기능으로 다운그레이드 되었다면, ‘실행클래스’에서 아래와 같이 바꿀 수 있다.
public static void main( String[] args ) throws Exception {
    …..
    // 실행 클래스는 K3A등산화를 생성할때 초강력 고어텍스 클래스를 인자로 넘겨주었다.
    MountainClimbingBoots k3aBoots = new K3AClimbingBoots(new UltraGoreTex());
    …...
    // 프로그램 실행중에 일반 고어텍스 클래스를 인자로 넘겨주었다.
    k3aBoots.setGoreTex(new GeneralGoreTex());
    ....
}

 

 

댓글