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