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