Kotlinin getters ja setters (esimerkillä)

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

Mielenkiintoisia artikkeleita...