Как создать сеттер и геттер в Kotlin?

Пользователь

от narciso , в категории: Другие , 2 года назад

Как создать сеттер и геттер в Kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от cayla , 2 года назад

@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 для хранения значения.

Пользователь

от rudolph_senger , 2 года назад

@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 возможность вывести его самостоятельно.