상속의 두가지 용도

  1. 타입 계층을 구현한다. 타입계층의 관점에서 부모 클래스는 일반적인 개념을 구현하고 자식 클래스는 특수한 개념을 구현한다.
  2. 코드 재사용. 하지만 코드 재사용을 위해서 상속을 사용할 경우 부모클래스와 자식 클래스가 강하게 결합되기 때문에 변경하기 어려운 코드를 얻게 될 확률이 높다.

개념 관점의 타입

우리가 인지하는 세상의 사물의 종류를 타입이라고 한다. 어떤 대상이 타입으로 분류될 때 그 대상을 타입의 인스턴스 라고 부른다. 일반적으로 타입의 인스턴스를 객체라고 부른다.

프로그래밍 언어 관점의 타입

  1. 타입에 수행될 수 있는 유효한 오퍼레이션의 집합을 정의한다.
  2. 타입에 수행되는 오퍼레이션에 대해 미리 약속된 문맥을 제공한다.

객체지향 페러다임 관점의 타입

객체의 퍼블릭 인터페이스가 객체의 타입을 결정한다. 따라서 동일한 퍼블릭 인터페이스를 제공하는 객체들은 동일한 타입으로 분류된다.

슈퍼타입

서브타입