Котлінські геттери та сетери (на прикладі)

У цій статті ви навчитеся використовувати геттери та сетери в Котліні за допомогою прикладу.

Перш ніж дізнатись про геттери та сеттер, обов’язково перевірте клас і об’єкти Kotlin.

У програмуванні геттери використовуються для отримання вартості властивості. Подібним чином сеттери використовуються для встановлення значення властивості.

У Котліні геттери та сетери не є обов’язковими і створюються автоматично, якщо ви не створюєте їх у своїй програмі.

Як працюють геттери та сетери?

Наступний код у Kotlin

 клас Person (ім'я варіанта: String = "defaultValue")

еквівалентно

 клас Person (ім'я варіанта: String = "defaultValue" // getter get () = field // setter set (value) (field = value))

Коли ви створюєте екземпляр об'єкта Personкласу та ініціалізуєте властивість name, воно передається значенню параметра setters і встановлює поле value.

 val p = Person () p.name = "jack"

Тепер, коли ви отримуєте доступ до властивості name об’єкта, ви отримаєте поле через код get() = field.

 println ("$ (p.name)")

Ось робочий приклад:

 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

Тут властивість actualAge працює належним чином.

Однак існує додаткова логіка налаштування для модифікації значення властивості age.

Цікаві статті...