오버라이딩과 동적 디스패치 예제가 실행되는 순서
정적 타입으로 호출 가능 메서드 검사에서 시작해 하위 전용 동작은 패턴 검사 뒤 사용까지 값과 책임이 이동한다.
-
1
정적 타입으로 호출 가능 메서드 검사
메서드 이름이나 매개변수를 잘못 쓰면 새 메서드가 생길 수 있습니다.
-
2
실제 객체의 재정의 구현 선택
Animal 변수에서는 Animal이 선언한 메서드만 바로 호출할 수 있습니다.
-
3
하위 전용 동작은 패턴 검사 뒤 사용
재정의된 인스턴스 메서드는 런타임의 가장 구체적인 구현이 실행됩니다.
실행 순서 format은 실제 Warning 구현이 실행되지만 color 호출 가능성은 Message라는 정적 타입으로 검사됩니다.