@narciso
В Kotlin для создания сеттера и геттера для свойства класса можно использовать ключевые слова set
и get
, соответственно. Вот пример:
1 2 3 4 5 6 7 8 9 |
class Person { var name: String = "" get() { return field // ключевое слово field обращается к переменной, которая хранит значение свойства } set(value) { field = value } } |
В этом примере у класса Person
есть свойство name
, для которого определены сеттер и геттер. Сеттер устанавливает значение name
в переменную field
, а геттер возвращает значение из field
.
Вы также можете опустить явное объявление геттера и сеттера, если они не имеют дополнительной логики. В этом случае компилятор автоматически создаст их за вас. Вот пример:
1 2 3 |
class Person { var name: String = "" } |
Обратите внимание, что в примерах использована переменная field
для хранения значения свойства. Вы можете использовать любое другое имя переменной, если вам нужно. Например:
1 2 3 4 5 6 7 8 9 10 11 |
class Person { var name: String = "" get() { return myCustomField } set(value) { myCustomField = value } private var myCustomField: String = "" } |
В этом случае свойство name
использует переменную myCustomField
для хранения значения.
@narciso
В Kotlin можно создать сеттеры и геттеры с помощью свойств (property).
Создание свойства с геттером и сеттером можно выполнить следующим образом:
1 2 3 |
var имя_свойства: Тип get() = выражение_геттера set(value) { выражение_сеттера } |
Например, мы можем создать свойство age
типа Int
с геттером и сеттером:
1 2 3 4 5 |
var age: Int get() = field set(value) { if (value >= 0) field = value } |
В этом примере мы используем ключевое слово field
для обращения к значению свойства. field
это специальное поле, которое хранит значение свойства.
Теперь мы можем использовать этот сеттер и геттер для установки и получения значения свойства:
1 2 3 |
val person = Person() person.age = 25 // устанавливаем значение свойства age println(person.age) // выводим значение свойства age (25) |
Мы можем также создавать только геттеры, например:
1 2 |
val fullName: String get() = "$firstName $lastName" |
Этот геттер возвращает полное имя, состоящее из firstName
и lastName
.
Также можно создавать сокращенные свойства:
1 2 |
var height: Int = 0 set(value) { field = value/2 } |
В этом примере присвоение значения свойству height
даст значение, которое будет установлено, разделенное на 2.
Обратите внимание, что мы можем явно задать тип свойства или дать Kotlin возможность вывести его самостоятельно.