Sobes.tech
Junior

Was kannst du über Eigenschaften sowie die Methoden get und set in Kotlin erzählen?

sobes.tech KI

Antwort von AI

In Kotlin sind Eigenschaften eine Kombination aus einem Feld und den entsprechenden Getter- und Setter-Methoden.

Definition einer Eigenschaft:

class MyClass {
    var mutableProperty: String = "default"
    val immutableProperty: Int = 10
}

Hier ist mutableProperty eine veränderbare Eigenschaft mit Standard-Getter und -Setter. immutableProperty ist eine unveränderliche Eigenschaft nur mit Standard-Getter.

Explizite Definition von Getter und Setter:

class MyClass {
    var customProperty: String = ""
        get() = field.toUpperCase() // Benutzerdefinierter Getter
        set(value) {
            field = value.toLowerCase() // Benutzerdefinierter Setter
        }

    val computedProperty: Int
        get() = (1..10).random() // Berechnete Eigenschaft, hat kein Feld
}
  • field - Referenz auf das Feld der Eigenschaft innerhalb des Getters und Setters. Wird nur für veränderbare Eigenschaften (var) verwendet.
  • Getter und Setter können angepasst werden, um zusätzliche Logik beim Zugriff oder Ändern der Eigenschaft auszuführen.
  • Berechnete Eigenschaften (computedProperty) haben kein eigenes Feld und berechnen ihren Wert bei jedem Zugriff.

Wichtige Punkte:

  • In Kotlin ist es nicht notwendig, Getter und Setter für jedes Feld explizit zu erstellen, da sie automatisch generiert werden.
  • Eigenschaften werden über die Punkt-Notation (instanz.eigenschaftName) zugänglich gemacht.
  • Die explizite Definition von Getter und Setter ermöglicht es, Logik beim Zugriff oder Ändern der Eigenschaft hinzuzufügen.
  • Getter für val-Eigenschaften müssen immer einen Wert desselben Typs zurückgeben.
  • Setter für var-Eigenschaften akzeptieren einen Parameter desselben Typs.

Vergleich von Eigenschaften in Kotlin und Feldern+Methoden in Java:

Kotlin-Eigenschaft Java-Feld + Methoden Beschreibung
var meineEigenschaft: Typ private Typ meineEigenschaft; + public Typ getMeineEigenschaft() + public void setMeineEigenschaft(Typ wert) Veränderbare Eigenschaft mit automatischen Getter und Setter.
val meineEigenschaft: Typ private Typ meineEigenschaft; + public Typ getMeineEigenschaft() Unveränderliche Eigenschaft nur mit automatischem Getter.
Benutzerdefinierter Getter/Setter Explizite Logik Benutzerdefinierte Logik beim Zugriff oder Ändern.
Berechnete Eigenschaft Explizite Methode, die Wert zurückgibt Der Wert der Eigenschaft wird bei jeder Abfrage berechnet.