07.09.26
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
- Работает с иерархией наследования
|
||||
- Позволяет подставлять наследников на место их предков
|
||||
- Связывание с конкретным классом - во время выполнения
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
Единообразная обработка с помощью общего интейрфейса различных типов данных.
|
||||
## Виды:
|
||||
- [[Ad-hoc (перегрузка)]]
|
||||
- [[Полиморфизм подтипов]]
|
||||
- [[Параметрический полиморфизм]]
|
||||
## Позволяет
|
||||
- Писать менее специфичный, более общий код
|
||||
- Обеспечить расширяемость программ
|
||||
## Динамическое связывание
|
||||
- В классе хранится таблица виртуальных методов `vtable`
|
||||
- При компиляции - в таблицу заносятся методы класса
|
||||
- При загрузке класса - методу задается конкретный адрес
|
||||
- При выполнении из таблицы берется адрес метода
|
||||
- У потомков класс ссылка на метод имеет то же смещение
|
||||
- При реализации интерфейса у ссылки - другое смещение
|
||||
Reference in New Issue
Block a user