У цій статті ви навчитеся використовувати геттери та сетери в Котліні за допомогою прикладу.
Перш ніж дізнатись про геттери та сеттер, обов’язково перевірте клас і об’єкти 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.