Untitled

다형성의 종류

  1. 오버로딩 다형성
    1. 하나의 클래스 안에 동일한 이름의 메서드가 존재하는 경우
  2. 강제 다형성
    1. 언어가 지원하는 자동적인 타입 변환이나 사용자가 직접 구현한 타입 변환을 이용해 동일한 연산자를 다양한 타입에 사용할 수 있는 방식을 가리킨다.
  3. 매개변수 다형성
    1. 클래스의 인스턴스 변수나 메서드의 매개변수 타입을 임의의 타입으로 선언한 후 사용하는 시점에 구체적인 타입으로 지정하는 방식
    2. 예를 들어 자바의 List 인터페이스는 컬렉션에 보관할 요소의 타입을 임의의 타입 T로 지정하고 실제 인스턴스를 생성하는 시점에 T를 구체적인 타입으로 지정하여 사용한다.
  4. 포함 다형성
    1. 메시지가 동일하더라도 수신한 객체의 타입에 따라 실제로 수행되는 행동이 달라지는 능력
    2. 포함 다형성을 구현하는 가장 일반적인 방법은 상속을 사용하는 것

데이터 관점의 상속이 자식 클래스의 인스턴스 안에 부모 클래스의 인스턴스를 포함하는 개념이라면 행동 관점의 상속은 부모 클래스가 정의한 일부 메서드를 자식 클래스의 메서드로 포함시키는 것을 의미한다.

Untitled

상속의 매커니즘

  1. 업캐스팅
  2. 동적 메서드 탐색
  3. 동적 바인딩
  4. self 참조
  5. super 참조