Подтвердить что ты не робот

Интерфейсы и свойства

Можно ли объявить свойство в интерфейсе без объявления для него методов get и set? Что-то вроде:

IValue = interface
  property value: double;
end;

Я хочу сказать, что разработчик должен иметь свойство, называемое значением, возвращая двойной, но мне действительно все равно, вернет ли он частное поле или результат из функции.

Если возможно, можно ли объявить его чтением/записью или только для чтения?

4b9b3361

Ответ 1

Нет. Интерфейсы реализованы как таблицы функций (в основном простая таблица виртуальных методов), и компилятор должен знать там функцию для сопоставления свойства. Вы можете объявить свойство на интерфейсе, но оно должно иметь функции как значения getter/setter, а не поля. Вы можете сделать это только для чтения или только для записи.

Ответ 2

При работе со свойствами в интерфейсе подумайте о свойстве как ярлыке для чтения/записи. Для удовлетворения ярлыка требуется только один, иначе он ничего не указывает.