Полиморфизм
Возможность использовать один и тот же код для разных типов данных. Благодаря полиморфизму достигается высокая степень повторного использования, уменьшается объем кода и снижаются трудозатраты на его написание.
Разновидности
- Ad-hoc-полиморфизм - в статически типизируемых языках достигается путем перегрузки функций и операторов. Семантический анализатор выбирает из доступного набора одноименных функций ту, которая подходит по типам аргументов.
- Параметрический полиморфизм - в языках с сильной типизацией реализуется при помощи вывода и подстановки типов. К этой разновидности относят, например, шаблоны в C++, которые иногда называют статическим полиморфизмом.
- Полиморфизм подтипов - в ООП-языках реализуется при помощи наследования классов. Основан на принципе подстановки Барбары Лисков: функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом.