7.3 Реализация интерфейса

На верх  Назад  Вперёд

Класс реализующий интерфейс должен реализовать все методы интерфейса. Если метод интерфейса не реализован, то компилятор выдаст сообщение об ошибке. Например определение:

Type
IMyInterface = Interface
  Function MyFunc : Integer;
  Function MySecondFunc : Integer;
end;
 
TMyClass = Class(TInterfacedObject,IMyInterface)
  Function MyFunc : Integer;
  Function MyOtherFunc : Integer;
end;
 
Function TMyClass.MyFunc : Integer;
begin
Result:=23;
end;
 
Function TMyClass.MyOtherFunc : Integer;
begin
Result:=24;
end;

приведет к ошибке компиляции:

Error: No matching implementation for interface method "IMyInterface.MySecondFunc:LongInt" found

Ошибка: Ненайдено реализации интерфейса для метода "IMyInterface.MySecondFunc: LongInt"

Как правило, имена методов, реализующих интерфейс, должны быть такими же как имена методов при определении интерфейса.

Тем не менее, можно использовать псевдонимы для методов, составляющих интерфейс: то есть, компилятору можно показать, что метод интерфейса осуществляется с помощью метода класса с другим именем. Это делается следующим образом:

Type
IMyInterface = Interface
  Function MyFunc : Integer;
end;
 
TMyClass = Class(TInterfacedObject,IMyInterface)
  Function MyOtherFunction : Integer;
  Function IMyInterface.MyFunc = MyOtherFunction;
end;

Это объявление говорит компилятору, что метод интерфейса MyFunc в интерфейсе IMyInterface реализован методом в классе MyOtherFunction классом TMyClass.