定義和實現介面

介面被宣告為類,但沒有訪問修飾符(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 成員,但如果使用介面的例項,仍然可以從另一個類呼叫。