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