Home 상속보단 조립
Post
Cancel

상속보단 조립

상속

: 상속을 통해 상위클래스의 메소드들을 물려받고 거기에 메소드를 추가하는 식으로 상위클래스의 기능을 재사용, 확장하는 방법으로 활용한다.

  • 추상화 : 비슷한 로직들을 따로 빼서 정의함 -> 메소드명만 보고도 어떤 기능을 하는지 대충 알 수 있어야 한다. -> 가독성을 높힌다.
  • 상속 -> 아예 interface라서 상속을 받으면 그 안에 정의된 메소드들을 다 @Override해서 재정의 혹은 확장한다. 진짜 하위클래스일경우에만 사용하는 게 좋다.

문제점

  • 상속 후에 상위클래스를 변경하는 경우, 그에따라 하위클래스들이 동작하지 않을 수 있다 -> 상위클래스의 변경이 어렵다.
  • 어떤 하위클래스가 생성될지 모름 -> 하위클래스가 많아질수록 상위클래스를 수정하기 힘들다.
  • 하위클래스가 무분별하게 생성될수있다.
  • 하위클래스에서 메소드를 본래의 의도와는 다르게 사용할 수 있다.

🙋🏻‍♀️ 그렇다면 상속을 사용하면 안되나? 상속 대신 조립!

조립

: 상속을 통해 무조건 적인 구현이 아닌, 필드나 객체로 필요한 시점에 생성해서 사용한다. 즉, 다양한 기능을 가진 객체를 여러개 구현해서 더 많은 기능들을 구현한다.

객체생성을 통해 구현하게 되면 기존에 무분별한 상속으로 인해 클래스가 많이 생성되는 것을 방지할 수 있다.

🧐 그런데 조립이라는건 객체로 정의할 수 있는 것들만 가능한 이야기 아닌가?..

  • 조립으로 구현이 가능한지 확인하기
  • 진짜 하위타입일 경우에만 상속을 구현하기 - 진짜로 그 기능이 하위에 있는 기능인건지 생각하기

출처: 최범균, “객체 지향 프로그래밍 입문”, 인프런

This post is licensed under CC BY 4.0 by the author.

테스트 코드,, 그리고 마주한 4시간의 삽질,,

의존과 DI