Ist es in einer Kotlin-Schnittstelle wichtig, ob Eigenschaften mit leeren get / set-Anweisungen deklariert werden?
Zum Beispiel ...
%Vor%Es fällt mir schwer, einen Unterschied zu bemerken.
Bei der Implementierung der Schnittstelle scheint es egal zu sein, ob ich Getter / Setter für die Eigenschaften verwende oder ob ich den Wert direkt setze.
Wenn Sie auf diese über Java zugreifen, haben die val
beide Getter und die var
haben beide Getter und Setter.
Die Property-Deklarationen in Ihrem Beispiel sind identisch, get
und set
können sicher von dort entfernt werden, weil, wie Sie richtig angemerkt haben, die Accessoren trotzdem generiert werden. Die Syntax mit get
und set
kann jedoch verwendet werden, um eine Accessor-Implementierung bereitzustellen oder deren Sichtbarkeit einzuschränken.
Bereitstellung:
%Vor%Dieses Beispiel zeigt eine Standardimplementierung einer in einer Schnittstelle deklarierten Eigenschaft. Diese Eigenschaft kann in den Schnittstellenimplementierungen immer noch überschrieben werden.
%Vor% Hier überschreibt get() = ...
das Standard-Getter-Verhalten einer Eigenschaft mit einem Backing-Feld, während set
nicht erwähnt wird und sich daher normal verhält.
Sichtbarkeitseinschränkung:
%Vor% In diesem Beispiel ist die Setter-Sichtbarkeit private
. Die Sichtbarkeit von get
ist für die Sichtbarkeit der Eigenschaft immer gleich, sodass Sie sie nicht separat angeben müssen. Schnittstellen können private
members nicht deklarieren.
Der Setter dieser Eigenschaft ist auf diese Klasse und ihre Unterklassen beschränkt. Schnittstellen können protected
members nicht deklarieren.
Natürlich kann eine Accessor-Implementierung mit einer Sichtbarkeitseinschränkung kombiniert werden:
%Vor%Siehe auch:
Tags und Links kotlin properties getter-setter