When a class implements an interface, it should implement all methods of the interface. If a
method of an interface is not implemented, then the compiler will give an error. For
example:
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;
will result in a compiler error:
Error: No matching implementation for interface method
"IMyInterface.MySecondFunc:LongInt" found
At the moment of writing, the compiler does not yet support providing aliases for an interface as in
Delphi. i.e. the following will not yet compile:
ype
IMyInterface = Interface
Function MyFunc : Integer;
end;
TMyClass = Class(TInterfacedObject,IMyInterface)
Function MyOtherFunction : Integer;
// The following fails in FPC.
Function IMyInterface.MyFunc = MyOtherFunction;
end;
This declaration should tell the compiler that the MyFunc method of the IMyInterface interface is
implemented in the MyOtherFunction method of the TMyClass class.