Dynamic binding
Occurs when decision about which method to run can only be made at run time
- Needed when:
- A variable is declared to have a superclass as its type, and
- There is more than one possible polymorphic method that could be run among the type of the variable and its subclasses