Полиморфизм (polymorphism)
Коротко: Объект подкласса можно использовать везде, где ожидается суперкласс, — при вызове метода реальный тип объекта во время выполнения решает, какая реализация выполнится.
Подробнее: Пример: переменная типа Animal во время выполнения может хранить объект Dog; вызов makeSound() выполняет переопределённую версию Dog, хотя переменная имеет тип Animal.
Подробности
class Animal { void makeSound() {См. также: наследование, интерфейс, ООП