[10분 테코톡] 로키의 상속보다는 Composition 영상시청내용
상속에 관하여
(자바)상속의 특징
1.부모 클래스와 자식 클래스는 예약어 extends에 의하여 정해진다.
2. 하나의 부모 클래스는 여러개의 자식 클래스를 가질 수 있다. 반대로 하나의 클래스는 여러개의 클래스로부터 상속을 받을 수 없다.
3. 부모 클래스로부터 상속받은 자식 클래스는 부모 클래스의 자원을 모두 사용할 수 있으나 부모클래스는 자식클래스의 자원을 가져다 쓸 수 없다.
4. 자식클래스는 또 다른 클래스의 부모 클래스가 될 수 있다.
5. 자식클래스는 부모클래스로부터 물려받은 자원을 override 하여 수정해서 사용할 수 있다.
6. 부모클래스가 상속받은 자원도 자식클래스가 사용 가능하다.
상속의 장점
1. 코드의 재사용을 통해 중복을 줄인다.
2. 확장성이 증가한다.
3. 클래스 간의 계층적 관계를 구성함으로써 다형성을 구현할 수 있다.
4. 개발 시간이 단축된다.
상속의 문제점
부모 클래스의 결함도 자식 클래스에게 넘어온다.
조합에 관하여
조합이란 기존 클래스를 확장하는 대신에 새로운 클래스를 만들고 private 필드로 기존 클래스의 인스턴스를 참조하게 하는 설계이다.
조합의 장점
1. 새로운 클래스는 기존 클래스의 내부 구현 방식의 영향에서 벗어나며, 심지어 기존 클래스에 새로운 메서드가 추가되더라도 전혀 영향을 받지 않습니다.
2. 메서드를 호출하는 방식으로 동작하기 때문에 캡슐화를 깨드리지 않는다.
3. 상위 클래스에 의존하지 않기 때문에 변화에 유연하다.
그렇다면 상속은 사용하면 안되는건가?
아니다 명확할 때만 사용하라는 뜻이다.(명확한 IS-A 관계의 경우)
상위 클래스가 확장할 목적으로 설계되었고 문서화도 잘되어 있는 경우 사용하자.
상위 클래스와 하위 클래스 모두 같은 프로그래머가 통제하는 패키지안에서라면 사용하자.
<요약:확실하지 않으면 상속을 쓰지말자>