Šiame straipsnyje naudodamiesi pavyzdžiu išmoksite naudoti kotletus ir seterius Kotline.
Prieš sužinodami apie geterius ir seterius, būtinai patikrinkite Kotlino klasę ir objektus.
Programuojant getters yra naudojami norint gauti turto vertę. Panašiai, nustatant turto vertę, naudojami seteriai.
Kotline getters ir seteriai yra neprivalomi ir yra automatiškai sugeneruojami, jei jų nesukuriate savo programoje.
Kaip veikia getters ir seteriai?
Šis kodas Kotlin
klasės asmuo (var name: String = "defaultValue")
yra lygiavertis
klasės asmuo (var vardas: eilutė = "defaultValue" // getter get () = laukas // seterio rinkinys (vertė) (laukas = reikšmė))
Kai jūs išradote Person
klasės objektą ir inicializuojate vardo ypatybę, jis perduodamas nustatytojo parametro vertei ir nustato lauko reikšmę.
val p = Asmuo () p.name = "jack"
Dabar, kai pasieksite objekto pavadinimo ypatybę, gausite lauką dėl kodo get() = field
.
println ("$ (p.name)")
Štai veikiantis pavyzdys:
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 ) )
Kai paleisite programą, išvestis bus:
Domkratas
Taip pagal nutylėjimą veikia „geteriai“ ir „setters“. Tačiau galite pakeisti nuosavybės vertę (modifikuoti vertę) naudodami getters ir seters.
Pavyzdys: nuosavybės vertės keitimas
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 )
Kai paleisite programą, išvestis bus:
Maria: tikrasis amžius = 15 Maria: apsimetęs amžius = 18 Angela: tikrasis amžius = 35 Angela: apsimetęs amžius = 32
Čia realusAge turtas veikia kaip tikėtasi.
Tačiau norint nustatyti amžiaus nuosavybės vertę, yra papildoma logika.