Kotlinovci i postavljači (s primjerom)

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

Zanimljivi članci...