Tässä artikkelissa opit käyttämään gettereitä ja asettimia Kotlinissa esimerkin avulla.
Ennen kuin opit vetureista ja asettimista, muista tarkistaa Kotlin-luokka ja -esineet.
Ohjelmoinnissa gettereitä käytetään kiinteistön arvon saamiseen. Samoin asetinlaitteita käytetään kiinteistön arvon asettamiseen.
Kotlinissa ketjut ja asettimet ovat valinnaisia ja ne luodaan automaattisesti, jos et luo niitä ohjelmasi.
Kuinka getters ja setters toimivat?
Seuraava koodi Kotlinissa
luokka Henkilö (muuttujan nimi: String = "defaultValue")
vastaa
luokka Henkilö (muuttujan nimi: Merkkijono = "oletusarvo" // getter get () = kenttä // asetinsarja (arvo) (kenttä = arvo))
Kun instantioit Person
luokan objektin ja alustat nimiominaisuuden, se välitetään asettajien parametriarvolle ja asettaa kentän arvoksi.
val p = Henkilö () p.name = "jack"
Nyt kun käytät objektin nimiominaisuutta, saat kentän koodin takia get() = field
.
println ("$ (p.name)")
Tässä on toimiva esimerkki:
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 ) )
Kun suoritat ohjelmaa, tulos on:
Jack
Tällä tavalla getters ja seters toimivat oletusarvoisesti. Voit kuitenkin muuttaa ominaisuuden arvoa (muokata arvoa) käyttämällä ketjua ja asetinta.
Esimerkki: Ominaisuuden arvon muuttaminen
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 )
Kun suoritat ohjelmaa, tulos on:
Maria: todellinen ikä = 15 Maria: teeskennelty ikä = 18 Angela: todellinen ikä = 35 Angela: teeskennelty ikä = 32
Tässä todellinenAge-ominaisuus toimii odotetulla tavalla.
Ikäomaisuuden arvon muuttamiseen on kuitenkin olemassa lisälogiikkaa.