U ovom ćete članku naučiti koristiti gettere i settere u Kotlinu uz pomoć primjera.
Prije nego što naučite o getterima i setteru, provjerite klasu i predmete Kotlin.
U programiranju se geteri koriste za dobivanje vrijednosti svojstva. Slično tome, postavljači se koriste za postavljanje vrijednosti svojstva.
U Kotlinu su getteri i setteri neobavezni i automatski se generiraju ako ih ne kreirate u svom programu.
Kako rade geteri i postavljači?
Sljedeći kod u Kotlinu
klasa Osoba (var ime: String = "defaultValue")
je ekvivalentan
klasa Osoba (naziv var: String = "defaultValue" // getter get () = field // setter set (value) (field = value))
Kada instantirate objekt Person
klase i inicijalizirate svojstvo name, ono se prosljeđuje vrijednosti parametra setters i postavlja polje value.
val p = Osoba () p.name = "jack"
Sada, kada pristupite svojstvu imena objekta, dobit ćete polje zbog koda get() = field
.
println ("$ (p.name)")
Evo radnog primjera:
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 ) )
Kada pokrenete program, izlaz će biti:
utičnica
Na taj način geteri i postavljači rade prema zadanim postavkama. Međutim, možete promijeniti vrijednost svojstva (izmijeniti vrijednost) pomoću getera i postavljača.
Primjer: Promjena vrijednosti svojstva
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 )
Kada pokrenete program, izlaz će biti:
Maria: stvarna dob = 15 Maria: glumljena dob = 18 Angela: stvarna dob = 35 Angela: tobožnja dob = 32
Ovdje svojstvo actualAge radi kako se očekivalo.
Međutim, postoji dodatna logika postavljača za izmjenu vrijednosti svojstva starosti.