Назад к вопросам
Junior
106
questionbank
Как осуществляется инкапсуляция в Kotlin?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Инкапсуляция в Kotlin достигается с помощью модификаторов доступа и свойств.
Модификаторы доступа:
public: доступен откуда угодно (по умолчанию).internal: доступен в пределах одного модуля.protected: доступен в своем классе и в его подклассах.private: доступен только внутри класса, где объявлен.
Свойства (properties) используются для управления доступом к данным класса. Они могут иметь getter и setter, которые можно переопределить для добавления логики при чтении или записи значения.
class Person {
// Приватное поле, доступно только внутри класса
private var _name: String = ""
// Свойство с публичным геттером и приватным сеттером
var name: String
get() = _name
private set(value) {
_name = value
}
// Публичная функция для установки имени, контролирующая ввод
fun setName(newName: String) {
if (newName.isNotBlank()) {
name = newName
} else {
println("Name cannot be blank")
}
}
}
fun main() {
val person = Person()
person.setName("Alice") // Используем контролируемый метод для изменения
println(person.name) // Читаем значение через геттер
// person.name = "Bob" // Ошибка компиляции, сеттер приватный
}