定义和实现接口

接口被声明为类,但没有访问修饰符(publicprivate,…)。此外,不允许定义,因此不能使用变量和常量。

接口应始终具有唯一标识符,可通过按 Ctrl + Shift + 生成 G。

IRepository = interface
    ['{AFCFCE96-2EC2-4AE4-8E23-D4C4FF6BBD01}']
    function  SaveKeyValuePair(aKey: Integer; aValue: string): Boolean;
end;

要实现接口,必须在基类后面添加接口的名称。此外,该类应该是 TInterfacedObject 的后代(这对于终身管理很重要 )。

TDatabaseRepository = class(TInterfacedObject, IRepository)
    function  SaveKeyValuePair(aKey: Integer; aValue: string): Boolean;
end;

当一个类实现一个接口时,它必须包含在接口中声明的所有方法和函数,否则它将不会编译。

值得注意的是,如果调用者使用接口,则访问修饰符不会产生任何影响。例如,接口的所有功能都可以实现为 strict private 成员,但如果使用接口的实例,仍然可以从另一个类调用。