接口和属性

Veg*_*gar 29 delphi properties interface

是否可以在接口中声明属性而不为其声明get-和set-methods?就像是:

IValue = interface
  property value: double;
end;
Run Code Online (Sandbox Code Playgroud)

我想声明实现者应该有一个名为value的属性,返回一个double,但我真的不在乎它是否返回私有字段或函数的结果.

如果可能,是否可以声明它是读/写还是只读?

Mas*_*ler 35

不.接口是作为函数表实现的(基本上是一个简单的虚方法表),编译器需要知道有一个函数将属性映射到.您可以在接口上声明属性,但它必须具有getter/setter值而不是字段的函数.但是,您可以将其设置为只读或只写.


ska*_*adt 8

在界面中使用属性时,请将该属性视为读取器/写入器的快捷方式.只需要一个来满足捷径...否则它不会指向任何东西.

  • 是的.事实上,财产声明纯粹是为了您的方便.如果你创建一个带有属性的接口,并将它放在一个实现函数但没有声明属性的类上,那么该类将编译得很好. (6认同)