Псевдоним метода
Иногда появляется
еще одна проблема при реализации
нескольких интерфейсов в одном
классе, которая заключается в
противоречии имен методов в одном
или нескольких интерфейсах.
Рассмотрим следующий фрагмент:
type
Iintf1 = interface
═════procedure AProc;
end;
Iintf2 = interface
═════procedure AProc;
end;
Каждый из
описываемых интерфейсов содержит
метод AProc(). Так как же объявить
класс с реализацией подобных
интерфейсов? Для этого необходимо
использовать псевдоним метода {method
aliasing). Псевдоним
метода позволяет описать метод
интерфейса в классе с различными
именами. Рассмотрим фрагмент,
описывающий объявление класса,
который реализует интерфейсы IIntfl и IIntf2:
type
TNevClass = class(TInterfacedObject, IIntfl, IIntf2)
═════protected
═════procedure IIntf2.AProc = AProc2;
═════procedure AProc; //Связана с IIntfl .AProc
═════procedureAProc2; //Связана с IIntf2.Aproc
end;
В приведенном
фрагменте метод АРгоc() интерфейса IIntf2 отображается на метод
с именем AProc2(). Создание псевдонима в
этом случае позволяет реализовать
любой интерфейс в любом классе без
конфликта имен методов.
|