인프런, 객체 지향 프로그래밍 입문 - 4

StarSeeker·2023년 3월 8일
0

상속

  • 상위 클래스의 기능을 재사용하고 확장하는 방법으로 활용한다.

    하지만,

  • 상속의 단점

  1. 상위 클래스 변경 어려움
  • 상위 클래스의 변경의 여파가 하위클래스에 따라 전파됨
  • 상위 클래스의 기능구현을 알아야 하위클래스에서 재사용할수 있는데 이는 캡슐화를 약하게 만든다.
  1. 클래스 증가
  • 하위 클래스가 점점 증가하는 문제가 생긴다.
  • 또 하위 클래스는 어떤 상위 클래스를 상속해야하는지 애매해지는 경우가 많이 생긴다. (각각의 기능이 여러 상위 클래스에 있을때 어떤 클래스를 상속받아야하나?)
  1. 오용의 가능성
  • 상속자체를 오용 할 수 있다.
  • 상위 클래스에 정의된 모든 메서드를 사용할수 있어서 하위클래스에서 잘못 사용될 확률이 높음.

상속 대신 조립 or 합성(Composition)으로!

  • 여러 객체를 묶어서 더 복잡한 기능을 제공
  • 다른 객체를 참조하는 방식으로 조립
  • 하위 클래스가 증식하는 문제가 사라지게된다.
  • 다른 클래스의 기능을 사용하고 싶으면 객체를 참조하는 필드를 클래스 안에서 선언하면 된다.

=> 상속하기에 앞서 조립으로 풀 수 없는지 검토를 해야한다!

  • 진짜 하위 타입인 경우에만 상속을 사용!
profile
춤추듯 개발하고 싶은 사람

0개의 댓글