В тази статия ще се научите да използвате getters и setters в Kotlin с помощта на пример.
Преди да научите за getters и setter, не забравяйте да проверите клас и обекти на Kotlin.
При програмирането се използват гетери за получаване на стойност на свойството. По същия начин сеттерите се използват за задаване на стойност на свойството.
В Kotlin, getters и setters не са задължителни и се генерират автоматично, ако не ги създадете във вашата програма.
Как работят гетери и сетери?
Следният код в Kotlin
клас Person (име на var: String = "defaultValue")
е еквивалентно на
клас Person (име на var: String = "defaultValue" // getter get () = field // setter set (value) (field = value))
Когато създадете екземпляр на обект от Person
класа и инициализирате свойството name, той се предава на стойността на параметъра setters и задава полето на value.
val p = Person () p.name = "jack"
Сега, когато осъществите достъп до свойството на името на обекта, ще получите поле поради кода 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 ) )
Когато стартирате програмата, изходът ще бъде:
крик
Това е начина, по който по подразбиране работят гетери и сетери. Можете обаче да промените стойността на свойството (да промените стойността), използвайки getters и setters.
Пример: Промяна на стойността на собствеността
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 работи както се очаква.
Съществува обаче допълнителна логика на настройващите, за да модифицират стойността на възрастовото свойство.