接口中的属性
由于接口中的变量声明是不可能的,因此不能使用定义属性(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;
但需要注意的是,这种方式只能通过接口实例访问属性,而不能通过类本身访问。此外,将属性添加到类中会增加可读性。