다형성은 하나의 부모 참조가 실제 객체 타입으로 갈라지는 구조다
Animal 타입 변수라도 런타임에 들어 있는 객체가 Dog면 Dog.sound(), Cat이면 Cat.sound()가 실행된다.
| 구분 | 의미 | 판단 |
|---|---|---|
| 공통 부모 타입 | Dog와 Cat을 같은 Animal로 다룸 | 참조 타입과 실제 타입을 분리 |
| 메소드 재정의 | 각 자식이 sound를 자기 방식으로 구현 | 이름은 같지만 구현은 다름 |
| 동적 바인딩 | 실행 시점 실제 객체 기준 | 컴파일 시점 타입만 보고 판단하지 않음 |
핵심 한 참조가 동시에 둘을 가리키는 것이 아니라, 실행 때 들어 있는 실제 객체에 따라 분기된다.