2009-08-11 4 views
20

E 'possibile dichiarare una proprietà in un'interfaccia senza dichiarare i metodi get e set per essa? Qualcosa di simile:Interfacce e proprietà

IValue = interface 
    property value: double; 
end; 

voglio affermare che l'implementor dovrebbe avere un valore di proprietà denominata, restituendo un doppio, ma io davvero non mi interessa se restituisce un campo privato o il risultato di una funzione.

Se è possibile, è possibile dichiararlo in lettura/scrittura o in sola lettura?

+3

Questo mi fa odiare delphi ..: D. –

+0

quando ci sono tanti altri motivi tra cui scegliere? In realtà, mi è piaciuta molto Delphi, ma per me è un capitolo chiuso. – Vegar

risposta

30

No. Le interfacce sono implementate come tabelle di funzioni (fondamentalmente una semplice tabella di metodi virtuali) e il compilatore deve sapere che esiste una funzione per mappare la proprietà. È possibile dichiarare una proprietà su un'interfaccia, ma deve avere funzioni come valori getter/setter, non campi. Puoi renderlo di sola lettura o solo in scrittura, però.

6

Quando si lavora con le proprietà in un'interfaccia, considerare la proprietà come una scorciatoia per il lettore/scrittore. Solo uno è richiesto per soddisfare la scorciatoia ... altrimenti non punta a nulla.

+4

Sì. In effetti, la dichiarazione di proprietà è puramente lì per la vostra convenienza. Se crei un'interfaccia con una proprietà su di essa e la metti in una classe che implementa le funzioni ma non dichiara la proprietà, quella classe verrà compilata correttamente. –