Sobes.tech
Junior

Как се реализира инкапсулацията в Kotlin?

sobes.tech AI

Отговор от AI

Капсулирането в Kotlin се постига чрез модификатори за достъп и свойства.

Модификатори за достъп:

  • public: достъпен отвсякъде (по подразбиране).
  • internal: достъпен в рамките на същия модул.
  • protected: достъпен в своя клас и в подкласовете му.
  • private: достъпен само вътре в класа, където е обявен.

Свойствата се използват за управление на достъпа до данните на класа. Те могат да имат getter и setter, които могат да бъдат преписани за добавяне на логика при четене или писане на стойността.

class Person {
    // Частно поле, достъпно само вътре в класа
    private var _name: String = ""

    // Свойство с публичен getter и частен setter
    var name: String
        get() = _name
        private set(value) {
            _name = value
        }

    // Публична функция за задаване на име, контролира входа
    fun setName(newName: String) {
        if (newName.isNotBlank()) {
            name = newName
        } else {
            println("Името не може да бъде празно")
        }
    }
}

fun main() {
    val person = Person()
    person.setName("Alice") // Използваме контролиран метод за промяна
    println(person.name)    // Четем стойността чрез гетъра
    // person.name = "Bob"   // Грешка при компилация, сетърът е частен
}