Junior
Wat kun je vertellen over de eigenschappen en ook de get- en set-methoden in Kotlin?
sobes.tech AI
Antwoord van AI
In Kotlin vormen eigenschappen een combinatie van een veld en de bijbehorende getter en setter.
Definitie van eigenschap:
class MyClass {
var mutableProperty: String = "default"
val immutableProperty: Int = 10
}
Hier is mutableProperty een wijzigbare eigenschap met de standaard getter en setter. immutableProperty is een onveranderlijke eigenschap met alleen de standaard getter.
Expliciete definitie van getter en setter:
class MyClass {
var customProperty: String = ""
get() = field.toUpperCase() // Aangepaste getter
set(value) {
field = value.toLowerCase() // Aangepaste setter
}
val computedProperty: Int
get() = (1..10).random() // Berekende eigenschap, geen veld
}
field- verwijzing naar het veld van de eigenschap binnen de getter en setter. Alleen gebruikt voor wijzigbare eigenschappen (var).- Getters en setters kunnen worden aangepast om extra logica uit te voeren bij toegang of wijziging.
- Berekende eigenschappen (
computedProperty) hebben geen eigen veld en berekenen altijd hun waarde bij toegang.
Belangrijke punten:
- In Kotlin is het niet nodig om expliciet getters en setters te maken voor elk veld, omdat ze automatisch worden gegenereerd.
- Eigenschappen worden benaderd via de puntnotatie (
instance.naamEigenschap). - Het expliciet definiëren van getters en setters maakt het mogelijk om logica toe te voegen bij toegang of wijziging.
- Getters voor
val-eigenschappen moeten altijd een waarde van hetzelfde type teruggeven. - Setters voor
var-eigenschappen accepteren een parameter van hetzelfde type.
Vergelijking van eigenschappen in Kotlin en velden+methoden in Java:
| Kotlin Eigenschap | Java Veld + Methodes | Beschrijving |
|---|---|---|
var mijnEigenschap: Type |
private Type mijnEigenschap; + public Type getMijnEigenschap() + public void setMijnEigenschap(Type waarde) |
Wijzigbare eigenschap met automatische getter en setter. |
val mijnEigenschap: Type |
private Type mijnEigenschap; + public Type getMijnEigenschap() |
Onveranderlijke eigenschap met alleen automatische getter. |
| Aangepaste getter/setter | Handgeschreven logica | Toevoegen van aangepaste logica bij toegang of wijziging. |
| Berekende eigenschap | Expliciete methode die waarde teruggeeft | De waarde van de eigenschap wordt bij elke aanvraag berekend. |