Наследование реализации |
Vip-интерфейс помимо функций содержит еще:
логические таблицы: главную и остальные;
видимые элементы, такие как главное окно и остальные окна;
обработчики событий, табличные (панельные) и оконные.
При наследовании реализации все перечисленные элементы наследуются, имеется возможность расширения некоторых из них, в частности: логических таблиц и обработчиков событий. Расширение окон допускается только в смысле создания новых окон с собственными идентификаторами и обработчиками событий.
Если интерфейс-потомок дополнительно реализует объектный интерфейс, являющийся потомком какого-либо объектного интерфейса, реализованного родителем, то дополняющий obj-интерфейс заменяет родителя в списке имплементации, сохраняя реализацию его методов.
Пример 1
objInterface iA; procedure FA; end; objInterface iB (iA); procedure FB; end; objInterface iC (iA); procedure FC; end; vipInterface vA implements iA; vipInterface vB (vA) implements iB; // необходима реализация только iB.FB // vB реализует iA через iB ...
Рис. 2 Замена родителя наследником с сохранением реализации
В случае, когда для одного родительского obj-интерфейса имеется более одного наследника, дополнительно реализуемого интерфейсом-потомком, замена и сохранение реализации произойдёт только для первого дополняющего объектного интерфейса. Т.е. методы родителя у остальных интерфейсов необходимо реализовать заново.
Пример 2
... vipInterface vC (vA) implements iB, iC; // необходима реализация iB.FB, iC.FC и iC.FA // vB реализует iA через iB и iC ...
Рис. 3. Замена с сохранением реализации возможна только для первого потомка
Для сохранения родительской реализации у других интерфейсов необходимо явно указать тип имплементирования как виртуальный при помощи ключевого слова virtual.
Пример 3
... vipInterface vD (vA) implements iB, iC (virtual); // необходима реализация iB.FB и iC.FC // vB реализует iA через iB или iC
Рис. 4. Виртуальное имплементирование
Виртуальное имплементирование только копирует реализацию методов родительского интерфейса. Т.е. у vD как и у vC будет две виртуальные функции FA реализация которых будет совпадать.
Атлантис 5.0.