다형성
상속의 목적은 코드재사용이 아니다. 상속은 타입 계층을 구조화 하기 위해 사용
상속의 메커니즘
- 업캐스팅 : 부모클래스타입으로 선언된 변수에 자식 클래스의 인스턴스를 할당하는 것이 가능
- 동적 바인딩 : 선언된 변수의 타입이 아니라 메시지를 수신하는 객체의 타입에 따라 실행되는 메서드가 결정, 이것은 객체지향 시스템이 메시지를 처리할 적절한 메서드를 컴파일 시점이 아니라 실행 시점에 결정하기 떄문
동적 메서드 탐색과 다형성
- 메시지를 수신한 객체는 먼저 자신을 생성한 클래스에 적합한 메서드가 존재한는지 검사한다, 존재할 경우 메서드를 실행하고 탐색을 종료한다
- 메서드를 찾지 못했다면 부모 클래스에서 메서드 탐색을 계속한다, 적합한 메서드를 찾을 때 까지 상속 계층을 따라 올라가며 계속된다
- 상속 계층의 가장 최상위 클래스에 도달해도 메서드를 발견하지 못하면 예외를 발생시키고 탐색을 중단한다
Self 참조
- 메시지를 수신한 객체의 클래스에 따라 메서드 탐색을 위한 문맥을 실행시점에 결정
Super 참조
- 부모클래스만 호출하지 않고 조상클래스를 호출하는 것
(부모클래스부터 검색을 메서드 탐색을 시작한다. 더 상위의 부모클래스로 이동한다)
'IT자료실 > 기술서적' 카테고리의 다른 글
오브젝트 - 기술서적 스터디 14단원-일관성 있는 협력 (0) | 2023.11.02 |
---|---|
오브젝트 - 기술서적 스터디 13단원-서브클래싱과 서브타이핑 (0) | 2023.11.02 |
오브젝트 - 기술서적 스터디 11단원-합성과 유연한 설계 (0) | 2023.11.02 |
오브젝트 - 기술서적 스터디 10단원-상속과 코드의 재사용 (0) | 2023.08.24 |
오브젝트 - 기술서적 스터디 9단원-유연한 설계 (0) | 2023.08.24 |