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