로키의 상속보다는 Composition

KIM YONG GU·2023년 9월 5일
0

우아한테크

목록 보기
2/41

1. 상속의 장점

  • 코드의 재사용을 통해서 중복을 줄인다.
  • 확장성이 증가한다.
  • 클래스 간의 계층적 관계를 구성함으로써 다형성을 구현할 수 있다.
  • 개발 시간이 단축된다.

2. 상속의 문제점

캡슐화를 깨트린다.

상위 클래스의 구현이 하위 클래스에게 노출되기 때문에 캡슬화가 깨진다.
따라서 자식 클래스가 부모 클래스에 강하게 결합 및 의존하게 된다.
이로 인해 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작이 달라질 수 있다.
상위 클래스의 내부 구현이 달라지면 코드 한 줄 건드리지 않은 하위 클래스가 오동작 할 수 있다.

부모 클래스의 결함도 자식 클래스에게 넘어간다

Stack대신 Deque 인터페이스?

보다 완전하고 일관된 LIFO 스택 세트는 Deque 인터페이스 및 해당 구현에 의해 제공되며 이 클래스보다 우선적으로 사용해야 합니다. (메뉴얼 명시)

3. 조합 소개 및 조합의 장점

조합(Composition)

조합이란 기존 클래스를 확장하는 대신에 새로운 클래스를 만들고 private 필드로 기존 클래스의 인스턴스를 참조하게 하는 설계이다.

조합의 장점

  1. 새로운 클래스는 기존 클래스의 내부 구현 방식의 영향에서 벗어나며, 심지어 기존 클래스에 새로운 메서드가 추가되더라도 전혀 영향을 받지 않습니다.

  2. 메서드를 호출하는 방식으로 동작하기 때문에 캡슐화를 깨트리지 않는다.

  3. 상위 클래스에 의존하지 않기 때문에 변화에 유연하다.

4. 상속을 쓰기위한 조건

  • 명확한 IS-A 관계에 있는 경우
  • 상위 클래스가 확장할 목적으로 설계되었고 문서화도 잘되어 있는 경우
  • 상위 클래스와 하위 클래스 모두 같은 프로그래머가 통제하는 패키지 안에서라면..

5. 요약

상속을 잘 알고 사용하면 좋다.
조합이 약간 우위에 있는것 같기도?

Composition over Inheritance로 구글에서 검색하면 더 많은 정보를 볼 수 있음.

profile
Engineer, Look Beyond the Code.

0개의 댓글