합성(composition)

yshjft·2022년 9월 13일
0

Java, OOP

목록 보기
5/27

상속

  • 부모 클래스의 속성 및 동작을 상속하는 기능

  • 중복되는 내용을 제거할 수 있다.

  • 하지만 결합도를 높일 수도 있다 .

    • 자식 클래스는 부모 클래스의 구현에 의존하고 있기 때무에 부모 클래스의 변경에 영향을 많이 받는다.
    • 상위 클래스의 내부 구현을 알아야지만 하위 클래스를 제대로 사용할 수 있다.
    • 캡슐화 위반
    • 설계가 유연하지 않다.
  • 상속은 적절한 경우에만 사용해야 한다.

    • is a 관계
    • 상속으로 인해 내부 구현을 불필요하게 노출하고 있지 않아야 한다.
    • 확장하는 클래스의 결함이 부모 클래스까지 전파되어도 괜찮아야 한다.

합성(composition)

  • has a 관계
  • 다른 클래스의 객체를 포함하는 기능
  • 상속의 단점을 피하면서도 코드를 재사용할 수 있는 방법
  • 내부에 포함되는 객체의 구현이 아닌 인터페이스에만 의존하게 된다.
    • 인터페이스 의존에 따른 결합도를 낮출 수 있다.
    • 런타임 의존성(컴파일 타임에 어떠한 구체 클래스에 의존하지 않는다)

참고

profile
꾸준히 나아가자 🐢

0개의 댓글