I denne artikel lærer du at bruge getters og settere i Kotlin ved hjælp af et eksempel.
Før du lærer om getters og setter, skal du kontrollere Kotlin-klassen og objekter.
Ved programmering bruges getters til at få værdi af ejendommen. Tilsvarende bruges settere til at indstille ejendommens værdi.
I Kotlin er getters og settere valgfri og genereres automatisk, hvis du ikke opretter dem i dit program.
Hvordan fungerer getters og settere?
Den følgende kode i Kotlin
klasse Person (var navn: String = "defaultValue")
svarer til
klasse Person (var navn: String = "defaultValue" // getter get () = field // setter set (value) (field = value))
Når du instantierer objekt i Person
klassen og initialiserer navnegenskaben, sendes den til parameterværdien setters og sætter feltet til værdi.
val p = Person () p.name = "jack"
Nu, når du får adgang til objektets navnegenskab, får du felt på grund af koden get() = field
.
println ("$ (p.navn)")
Her er et fungerende eksempel:
fun main(args: Array) ( val p = Person() p.name = "jack" println("$(p.name)") ) class Person ( var name: String = "defaultValue" get() = field set(value) ( field = value ) )
Når du kører programmet, vil output være:
jack
Sådan fungerer getters og settere som standard. Du kan dog ændre ejendommens værdi (ændre værdi) ved hjælp af getters og settere.
Eksempel: Ændring af ejendommens værdi
fun main(args: Array) ( val maria = Girl() maria.actualAge = 15 maria.age = 15 println("Maria: actual age = $(maria.actualAge)") println("Maria: pretended age = $(maria.age)") val angela = Girl() angela.actualAge = 35 angela.age = 35 println("Angela: actual age = $(angela.actualAge)") println("Angela: pretended age = $(angela.age)") ) class Girl ( var age: Int = 0 get() = field set(value) ( field = if (value = 18 && value <= 30) value else value-3 ) var actualAge: Int = 0 )
Når du kører programmet, vil output være:
Maria: faktisk alder = 15 Maria: foregivet alder = 18 Angela: faktisk alder = 35 Angela: foregivet alder = 32
Her fungerer egenskapen actualAge som forventet.
Der er dog yderligere logik, der sætter for at ændre værdien af egenskaben alder.