→ 타입이 많다.

- 조건: 클래스 간 상속 관계가 있어야 한다.
- 원리: 부모 타입(상위 클래스) 하나로 자식 타입(하위 클래스) 여러 개를 다룰 수 있다.
- 즉, 부모 타입 변수 = 자식 객체 할당 가능

→ 따로따로 실행된다.



→ 실행되기 전 정적인 상태의 바인딩
- 정적 바인딩: 컴파일 시점에 참조 변수 타입 기준으로 호출 가능한 메서드 목록이 고정
- 동적 바인딩: 실행 시점에 실제 객체 타입에 따라 오버라이딩된 메서드가 실행
정적 바인딩(Static Binding)
- 컴파일 시점에 참조 변수의 타입을 기준으로 호출 가능한 메서드 목록이 결정되는 것
- 즉,
an1의 타입이 Animal이라면, 컴파일러는 Animal이 가진 메서드까지만 호출 가능하다고 인식한다.
- 이걸 정적 바인딩 또는 early binding이라고 한다.
동적 바인딩(Dynamic Binding)
- 실행(run-time) 시점에 실제 객체 타입에 따라 재정의된 메서드가 호출된다.