3.5.1 클래스/인터페이스 사이의 유니피케이션
3.5.1 클래스/인터페이스 사이의 유니피케이션
클래스 사이의 유니피케이션 동작을 정의할 때, 유니피케이션이 방향성이 있음을 기억하는 것이 중요해요. 더 특수화된(specialized) 클래스를 일반적인(generic) 클래스에 할당할 수 있지만, 그 반대는 유효하지 않습니다.
다음 할당이 허용돼요:
- 자식 클래스를 부모 클래스에 할당.
- 클래스를 구현된 인터페이스에 할당.
- 인터페이스를 기반 인터페이스에 할당.
이 규칙들은 전이적(transitive)이에요. 즉 자식 클래스는 부모 클래스의 기반 클래스, 부모가 구현한 인터페이스, 구현된 인터페이스의 기반 인터페이스 등에도 할당할 수 있습니다.
본문
클래스/인터페이스 사이의 유니피케이션은 방향성이 있어요. 특수화된 타입을 일반 타입으로 할당(업캐스팅)하는 것은 허용되지만, 일반 타입을 특수 타입으로 할당(다운캐스팅)하는 것은 허용되지 않습니다. 이 규칙들은 전이적이어서 상속과 인터페이스 계층을 따라 여러 단계가 적용될 수 있어요.