Junior
Какво можеш да разкажеш за свойствата и също така за методите get и set в Kotlin?
sobes.tech AI
Отговор от AI
В Kotlin свойствата представляват съчетание от поле и съответния геттер и сеттер.
Определение на свойство:
class MyClass {
var mutableProperty: String = "default"
val immutableProperty: Int = 10
}
Тук mutableProperty е променливо свойство с геттер и сеттер по подразбиране. immutableProperty е неизменяемо свойство само с геттер по подразбиране.
Явно определяне на геттер и сеттер:
class MyClass {
var customProperty: String = ""
get() = field.toUpperCase() // Потребителски геттер
set(value) {
field = value.toLowerCase() // Потребителски сеттер
}
val computedProperty: Int
get() = (1..10).random() // Изчисляемо свойство, няма поле
}
field- обратна връзка към полето на свойството вътре в геттера и сеттера. Използва се само за променливи свойства (var).- Геттерите и сеттерите могат да бъдат персонализирани, изпълнявайки допълнителна логика при достъп или промяна на свойството.
- Изчисляемите свойства (
computedProperty) нямат собствено поле и винаги изчисляват стойността при достъп.
Ключови моменти:
- В Kotlin няма необходимост явно да създавате геттер и сеттер за всяко поле, както в Java. Те се генерират автоматично.
- Свойствата са достъпни чрез точкова нотация (
instance.propertyName). - Явното определяне на геттер и сеттер позволява добавяне на логика при достъп или промяна на свойството.
- Геттерите за
valсвойство винаги трябва да връщат стойност от същия тип. - Сеттерите за
varсвойство приемат параметър от същия тип.
Сравнение на свойствата в Kotlin и полетата + методи в Java:
| Свойство в Kotlin | Поле + Метод в Java | Описание |
|---|---|---|
var myProperty: Type |
private Type myProperty; + public Type getMyProperty() + public void setMyProperty(Type value) |
Променливо свойство с автоматичен геттер и сеттер. |
val myProperty: Type |
private Type myProperty; + public Type getMyProperty() |
Неизменяемо свойство само с автоматичен геттер. |
| Персонализиран геттер/сеттер | Явно написана логика | Добавяне на потребителска логика при достъп или промяна. |
| Изчисляемо свойство | Явна функция, връщаща стойност | Стойността на свойството се изчислява при всеки достъп. |