定義和實現介面
介面被宣告為類,但沒有訪問修飾符(public
,private
,…)。此外,不允許定義,因此不能使用變數和常量。
介面應始終具有唯一識別符號,可通過按 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
成員,但如果使用介面的例項,仍然可以從另一個類呼叫。