Ist es beim Erstellen einer Schnittstelle in Kotlin wichtig, ob Eigenschaften erhalten / gesetzt wurden?

8

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.

%Vor%     
Ben Woodworth 29.11.2016, 00:54
quelle

1 Antwort

10

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.

    %Vor%

    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:

hotkey 29.11.2016, 01:28
quelle