구성 vs 상속

구성

  • “Has-a” 관계를 나타낸다.
  • 객체 간에 구현 사항을 원하는 만큼만 공개(블랙박스 재사용)할 수 있기 때문에 클래스 간에 결합도가 낮다1.

상속

  • “Is-a” 관계를 나타낸다.
  • 자식 클래스가 부모 클래스의 모든 내용을 상속(화이트박스 재사용)하기 때문에 클래스 간에 결합도가 높다.

1한 클래스가 수정되었을 때 다른 클래스를 수정해야 할 가능성이 적다.