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. |