2009-08-11 13 views
20

¿Es posible declarar una propiedad en una interfaz sin declarar los métodos get y set para ella? Algo así como:Interfaces y propiedades

IValue = interface 
    property value: double; 
end; 

quiero decir que el implementador debe tener un valor de propiedad llamada, devolviendo un doble, pero realmente no me importa si se devuelve un campo privado o el resultado de una función.

Si es posible, ¿es posible declararlo de lectura/escritura o de solo lectura?

+3

Esto es lo que me hace odiar delphi ..: D. –

+0

cuando hay tantas otras razones para elegir? En realidad, me gustaba bastante Delphi, pero ahora es un capítulo cerrado para mí. – Vegar

Respuesta

30

No. Las interfaces se implementan como tablas de funciones (básicamente una tabla de métodos virtuales simple) y el compilador necesita saber que hay una función para asignar la propiedad. Puede declarar una propiedad en una interfaz, pero tiene que tener funciones como valores getter/setter, no campos. Sin embargo, puede hacerlo de solo lectura o solo de escritura.

6

Al trabajar con propiedades en una interfaz, piense en la propiedad como un acceso directo al lector/escritor. Solo se requiere uno para satisfacer el atajo ... de lo contrario, no apunta a nada.

+4

Sí. De hecho, la declaración de propiedad es puramente para su conveniencia. Si crea una interfaz con una propiedad y la pone en una clase que implementa las funciones pero no declara la propiedad, esa clase compilará muy bien. –