Единообразная обработка с помощью общего интейрфейса различных типов данных. ## Виды: - [[Ad-hoc (перегрузка)]] - [[Полиморфизм подтипов]] - [[Параметрический полиморфизм]] ## Позволяет - Писать менее специфичный, более общий код - Обеспечить расширяемость программ ## Динамическое связывание - В классе хранится таблица виртуальных методов `vtable` - При компиляции - в таблицу заносятся методы класса - При загрузке класса - методу задается конкретный адрес - При выполнении из таблицы берется адрес метода - У потомков класс ссылка на метод имеет то же смещение - При реализации интерфейса у ссылки - другое смещение