상속의 용도는 두 가지이다.
코드 재사용
타입 계층을 구현
→ 타입 계층이 뭔지는 후술
→ 상속을 이용하는 목표는 코드 재사용이 아니라 타입 계층 구현이여야 한다.
타입 계층 구현은 다형적 동작과도 관련이 있는데 다형적 동작을 염두에 두고한 상속은 확장 가능하고 유연한 설계를 얻게 해줄 수 있다.
그럼 우리는 어떻게 올바른 타입 계층을 구성해서 상속을 잘 활용할 수 있을까? 그 원칙을 알아보는 것이 이번 장이다.
먼저 타입
이 뭐고 타입 계층
이 뭔지부터 알아보자.
타입을 이해하기 위해서는 개념 관점의 타입과 프로그래밍 언어 관점의 타입을 살펴봐야한다.
개념 관점의 타입
프로그래밍 언어 관점의 타입
개념 관점에서는 공통의 특징을 공유하는 대상의 분류
프로그래밍 언어 관점에서는 동일한 오퍼레이션
을 적용할 수 있는 인스턴스들의 집합
→ 객체지향 패러다임에서 이걸 잘 섞어서 의미를 만들면
퍼블릭 인터페이스
를 제공하는 객체라면 동일한 타입객체는 속성과 행동 두 가지를 가지고 있는데 위 정의를 살펴본다면 속성이 같더라도 행동이 다르면 같은 타입의 객체가 아니라는 것이다. → 객체에게 중요한 것은 속성이 아니라 행동이라는 것 → 객체를 볼 때는 항상 객체가 외부에 제공하는 행동에 초점을 맞춰야한다. → 협력과도 연관된 이야기일듯