2009-08-11 16 views
20

Ist es möglich, eine Eigenschaft in einer Schnittstelle zu deklarieren, ohne die get- und set-Methoden dafür zu deklarieren? Etwas wie:Schnittstellen und Eigenschaften

IValue = interface 
    property value: double; 
end; 

ich feststellen möchten, dass die Implementierer eine Eigenschaft namens Wert haben sollte, eine doppelte Rückkehr, aber ich wirklich egal, ob es ein privates Feld oder das Ergebnis aus einer Funktion zurückgibt.

Wenn es möglich ist, ist es möglich, es zu lesen/schreiben oder schreibgeschützt zu deklarieren?

+3

Das ist, was mich Delphi hassen ..: D. –

+0

wenn es so viele andere Gründe gibt, aus denen man wählen kann? Eigentlich mochte ich Delphi sehr, aber es ist jetzt ein abgeschlossenes Kapitel für mich. – Vegar

Antwort

30

Nein. Schnittstellen sind als Funktionstabellen implementiert (im Grunde eine einfache virtuelle Methodentabelle) und der Compiler muss wissen, dass es eine Funktion gibt, der die Eigenschaft zugeordnet werden kann. Sie können eine Eigenschaft auf einer Schnittstelle deklarieren, aber sie muss Funktionen als Getter/Setter-Werte haben, keine Felder. Sie können es jedoch schreibgeschützt oder schreibgeschützt machen.

6

Wenn Sie mit Eigenschaften in einer Schnittstelle arbeiten, denken Sie an die Eigenschaft als eine Verknüpfung zum Reader/Writer. Nur eine ist erforderlich, um die Abkürzung zu erfüllen ... sonst zeigt sie nichts.

+4

Ja. In der Tat ist die Eigentumsdeklaration nur für Ihre Bequemlichkeit da. Wenn Sie eine Schnittstelle mit einer Eigenschaft darauf erstellen und sie in eine Klasse einfügen, die die Funktionen implementiert, aber die Eigenschaft nicht deklariert, wird diese Klasse problemlos kompiliert. –