Sobes.tech
Junior

Jak je v Kotlinu realizována enkapsulace?

sobes.tech AI

Odpověď od AI

Zapouzdření v Kotlinu je dosaženo pomocí modifikátorů přístupu a vlastností.

Modifikátory přístupu:

  • public: dostupné odkudkoli (výchozí).
  • internal: dostupné v rámci stejného modulu.
  • protected: dostupné ve své třídě a v jejích podtřídách.
  • private: dostupné pouze uvnitř třídy, ve které je deklarováno.

Vlastnosti se používají k řízení přístupu k datům třídy. Mohou mít getter a setter, které lze přepsat pro přidání logiky při čtení nebo zápisu hodnoty.

class Person {
    // Soukromé pole, dostupné pouze uvnitř třídy
    private var _name: String = ""

    // Vlastnost s veřejným getterem a soukromým setterem
    var name: String
        get() = _name
        private set(value) {
            _name = value
        }

    // Veřejná funkce pro nastavení jména, kontroluje vstup
    fun setName(newName: String) {
        if (newName.isNotBlank()) {
            name = newName
        } else {
            println("Jméno nesmí být prázdné")
        }
    }
}

fun main() {
    val person = Person()
    person.setName("Alice") // Používáme kontrolovanou metodu ke změně
    println(person.name)    // Čteme hodnotu přes getter
    // person.name = "Bob"   // Chyba kompilace, setter je soukromý
}