介面中的屬性
由於介面中的變數宣告是不可能的,因此不能使用定義屬性(property Value: TObject read FValue write FValue;
)的快速方式。相反,必須在介面中宣告 Getter 和 setter(僅在需要時)。
IInterface = interface(IInterface)
['{6C47FF48-3943-4B53-8D5D-537F4A0DEC0D}']
procedure SetValue(const aValue: TObject);
function GetValue(): TObject;
property Value: TObject read GetValue write SetValue;
end;
值得注意的是,實現類不必宣告屬性。編譯器將接受此程式碼:
TImplementer = class(TInterfacedObject, IInterface)
procedure SetValue(const aValue: TObject);
function GetValue(): TObject
end;
但需要注意的是,這種方式只能通過介面例項訪問屬性,而不能通過類本身訪問。此外,將屬性新增到類中會增加可讀性。