다음 코드를 살펴봅시다.

public class MyStack<String> extends ArrayList<String> {

    public void push(String element){
    	add(element);
    }

    public String pop(){
	return remove(size()-1);
    }

}

MyStack 클래스는 ArrayList를 상속받았습니다.

개발자의 의도는 ArrayList를 상속받음으로써, ArrayList의 메소드를 사용하여 Stack을 구현하고자 한 것입니다.

하지만 실제로 사용하지 않는 속성과, 메소드를 같이 상속 받게 됩니다.

이런 불필요한 속성들은 Stack의 무결성 조약인 FILO(First In Last Out) 조약을 위배합니다.

이와 같은 이유로 우리는 상속이 아닌 **위임(Delegagtion)**을 써야합니다.

<br/>

<hr/>
<br/>

위임을 사용한 다음 코드를 살펴봅시다.

public class MyStack{
    ArrayList <String> array=new ArrayList<String>();

    public void push(String element){
	    array.add(element);
    }

    public String pop(){
	    return array.remove(array.size()-1);
    }

}

MyStack 클래스는 ArrayList를 상속 받지 않습니다.

MyStack 클래스는 ArrayList를 참조하고, 필요한 메소드만을 이용하여 Stack을 구현합니다.

이로 인하여, 불필요한 메소드를 상속받지 않게 됩니다.

이것을 위임이라고한다.

<br/>

<br/>

<br/>

<br/>

<br/>

0
이전 댓글 보기
등록
TOP