상속의 용도는 두 가지이다.

  1. 코드 재사용
  2. 타입 계층을 구현 → 타입 계층이 뭔지는 후술

→ 상속을 이용하는 목표는 코드 재사용이 아니라 타입 계층 구현이여야 한다.

타입 계층 구현은 다형적 동작과도 관련이 있는데 다형적 동작을 염두에 두고한 상속은 확장 가능하고 유연한 설계를 얻게 해줄 수 있다.

그럼 우리는 어떻게 올바른 타입 계층을 구성해서 상속을 잘 활용할 수 있을까? 그 원칙을 알아보는 것이 이번 장이다.

먼저 타입이 뭐고 타입 계층이 뭔지부터 알아보자.

타입

타입을 이해하기 위해서는 개념 관점의 타입과 프로그래밍 언어 관점의 타입을 살펴봐야한다.

→ 객체지향 패러다임에서 이걸 잘 섞어서 의미를 만들면

객체는 속성과 행동 두 가지를 가지고 있는데 위 정의를 살펴본다면 속성이 같더라도 행동이 다르면 같은 타입의 객체가 아니라는 것이다. → 객체에게 중요한 것은 속성이 아니라 행동이라는 것 → 객체를 볼 때는 항상 객체가 외부에 제공하는 행동에 초점을 맞춰야한다. → 협력과도 연관된 이야기일듯