В языках программирования и теории типов полиморфизмом называется способность функции обрабатывать данные разных типов.
Существует несколько разновидностей полиморфизма. Две наиболее различных из них были описаны Кристофером Стрэчи в 1967 году: это
Параметрический полиморфизм подразумевает исполнение одного и того же кода для всех допустимых типов аргументов, тогда как ad hoc полиморфизм подразумевает исполнение потенциально разного кода для каждого типа или подтипа аргумента.
Бьерн Страуструп определил полиморфизм как