목록상속 (2)
초보개발자 긍.응.성
추상 클래스와 인터페이스의 차이 자바가 제공하는 다중 구현 메커니즘은 인터페이스와 추상 클래스가 존재한다. 이 둘의 가장 큰 차이점은 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다는 것이다. 자바는 단일 상속만을 지원하므로, 추상 클래스 방식은 새로운 타입을 정의하는데 큰 제약을 갖게 된다. 반면 인터페이스가 선언한 메서드를 모두 정의하고 그 일반 규약을 잘 지킨 클래스라면 다른 어떤 클래스를 상속했든 같은 타입으로 취급받는다. 인터페이스의 장점 기존 클래스에도 손쉽게 새로운 인터페이스를 구현해넣을 수 있다. 인터페이스는 믹스인(mixin) 정의에 안성맞춤이다. 믹스인은 구현한 클래스에 원래의 '주된 타입' 외에도 특정한 선택적 행위를 제공한다고 선언하는 ..
상속(extends)과 컴포지션에 대하여 알아보자. 상속 (inheritance) 상속은 코드를 재사용하는 강력한 수단이다. 하지만 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만들게 된다. 상속의 위험성 캡슐화를 깨뜨린다. 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있다. 상위 클래스의 수정이 하위 클래스가 영향을 끼친다. 새로운 메서드가 추가된다면 하위 클래스에서 의도에 맞게 동작하도록 수정하여야 한다. 컴포지션 (Composition) 앞서 상속을 사용할 때 일어날 수 있는 위험성에 대하여 이야기하였다. 하지만 컴포지션을 통해 앞서 본 문제들을 피해 갈 수 있다. 컴포지션은 기존 클래스가 새로운 클래스의 구성요소로 쓰인다는 것을 의미한다. 새로운 클래스는 컴포지션을..