Sobes.tech
Junior

Hogyan valósul meg az inkapszuláció Kotlinben?

sobes.tech MI

Válasz az MI-től

A Kotlinben az enkapszulációt hozzáférés módosítók és tulajdonságok segítségével érik el.

Hozzáférés módosítók:

  • public: bárhonnan elérhető (alapértelmezett).
  • internal: ugyanazon modulon belül elérhető.
  • protected: saját osztályában és leszármazott osztályaiban elérhető.
  • private: csak az adott osztályon belül elérhető.

A tulajdonságokat az osztály adataihoz való hozzáférés kezelésére használják. Lehetnek getter és setter, amelyeket felülírhatunk, hogy logikát adjunk hozzá az érték olvasásához vagy írásához.

class Person {
    // Privát mező, csak az osztályon belül elérhető
    private var _name: String = ""

    // Tulajdonság nyilvános getterrel és privát setterrel
    var name: String
        get() = _name
        private set(value) {
            _name = value
        }

    // Nyilvános függvény a név beállítására, bemenet ellenőrzése
    fun setName(newName: String) {
        if (newName.isNotBlank()) {
            name = newName
        } else {
            println("Név nem lehet üres")
        }
    }
}

fun main() {
    val person = Person()
    person.setName("Alice") // Ellenőrzött módszerrel változtatunk
    println(person.name)    // Érték olvasása a getterrel
    // person.name = "Bob"   // Fordítási hiba, a setter privát
}