자바

상속과 합성

PSW 2024. 12. 16. 17:19

상속은 객체지향에서 코들르 재사용하기 위해 널리 사용되는 기법이다.

상속의  특징

  • 상속은 부모 클래스와 자식 클래스 사이의 관계를 컴파일 시점에 결정한다.
  • 실행 시점에 객체의 종류를 변경하는 것이 불가능하다.

이 특징으로 인해 두 가지의 문제점이 있다.

  1. 캡슐화의 위반
    -> 상속을 이용하기 위해서는 부모 클래스의 구조를 잘 알고 있어야 한다.
    -> 부모 클래스의 구현이 자식 클래스에게 노출되기 때문에 부모 클래스를 변경할 때 자식 클래스도 함께 변경될 확률을 높인다.
    -> 상속을 사용한 코드는 변경이 어려워진다.
  2. 설계가 유연하지 않음

합성의  특징

  • 합성으로 이루어진 관계는 내부 구현에 대해 외부객체가 알지 못한다.
  • 인터페이스에 정의된 메시지를 통해서만 코드를 재사용한다.

이 특징으로 인해 상속이 가지는 두 가지의 문제점을 해결한다.

 

  1. 인터페이스에 정의된 메시지를 통해서만 재사용이 가능하기 떄문에 구현을 효과적으로 캡슐화할 수 있다.
  2. 의존하는 인스턴스를 교체하는 것이 비교적 쉽기 때문에 설계를 유연하게 만든다.
  3. 상속은 클래스를 통해 강하게 결합되는 데 비해 합성은 메시지를 통해 느슨하게 결합된다.

-> 코드 재사용을 위해서는 상속보다는 합성을 선호하는 것이 더 좋은 방법이다.

 

하지만 상속을 절대 사용하지 말라는 것은 아니다.

-> 다형성을 위해 인터페이스를 재사용하는 경우에는 상속과 합서을 함께 조합해서 사용할 수 밖에 없다.

'자바' 카테고리의 다른 글

FACTORY 패턴  (2) 2024.12.20
디미터 법칙과 캡슐화  (0) 2024.12.19
POLYMORPHISM 패턴  (0) 2024.12.19
캡슐화  (0) 2024.12.16
다형성  (0) 2024.12.16