Sobes.tech
Junior

Ako sa realizuje enkapsulácia v Kotlin?

sobes.tech AI

Odpoveď od AI

Zapúzdrenie v Kotlinu sa dosahuje pomocou modifikátorov prístupu a vlastností.

Modifikátory prístupu:

  • public: dostupné odkiaľkoľvek (predvolené).
  • internal: dostupné v rámci toho istého modulu.
  • protected: dostupné v svojej triede a v jej podtriedach.
  • private: dostupné iba v rámci triedy, v ktorej je deklarované.

Vlastnosti sa používajú na riadenie prístupu k údajom triedy. Môžu mať getter a setter, ktoré je možné prepísať na pridanie logiky pri čítaní alebo zápise hodnoty.

class Person {
    // Súkromné pole, dostupné iba v triede
    private var _name: String = ""

    // Vlastnosť s verejným getterom a súkromným setterom
    var name: String
        get() = _name
        private set(value) {
            _name = value
        }

    // Verejná funkcia na nastavenie mena, kontroluje vstup
    fun setName(newName: String) {
        if (newName.isNotBlank()) {
            name = newName
        } else {
            println("Meno nemôže byť prázdne")
        }
    }
}

fun main() {
    val person = Person()
    person.setName("Alice") // Používame kontrolovanú metódu na zmenu
    println(person.name)    // Čítame hodnotu cez getter
    // person.name = "Bob"   // Chyba pri kompilácii, setter je súkromný
}