Котлин гетери и сетери (са примером)

Преглед садржаја

У овом чланку ћете научити да користите гетере и сетере у Котлину уз помоћ примера.

Пре него што научите о гетерима и постављачу, обавезно проверите класу и предмете Котлин.

У програмирању се гетери користе за добијање вредности својства. Слично томе, постављачи се користе за подешавање вредности својства.

У Котлину су гетери и постављачи опционални и аутоматски се генеришу ако их не креирате у свом програму.

Како гетери и сетери раде?

Следећи код у Котлину

 класа Особа (име вар: Стринг = "дефаултВалуе")

је еквивалентно са

 класа Особа (име вар: Стринг = "дефаултВалуе" // геттер гет () = фиелд // сеттер сет (валуе) (фиелд = валуе))

Када инстанцирате објект Personкласе и иницијализујете својство наме, он се преноси вредности параметра сеттерс и поставља поље на валуе.

 вал п = Особа () п.наме = "јацк"

Сада, када приступите својству имена објекта, добићете поље због кода get() = field.

 принтлн ("$ (п.наме)")

Ево радног примера:

 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 ) )

Када покренете програм, излаз ће бити:

 Јацк 

Овако гетери и постављачи раде по дефаулту. Међутим, можете променити вредност својства (изменити вредност) помоћу гетера и постављача.

Пример: Промена вредности својства

 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 )

Када покренете програм, излаз ће бити:

 Мариа: стварна старост = 15 Марија: претварана старост = 18 Ангела: стварна старост = 35 Ангела: тобожња старост = 32

Овде својство ацтуалАге ради како се очекивало.

Међутим, постоји додатна логика постављача да модификују вредност својства старости.

Занимљиви Чланци...