Наследование реализации Назад В начало Вперед

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.