Sobes.tech
Junior

Jak realizowana jest enkapsulacja w Kotlinie?

sobes.tech AI

Odpowiedź od AI

Enkapsulacja w Kotlinie osiągana jest za pomocą modyfikatorów dostępu i właściwości.

Modyfikatory dostępu:

  • public: dostępny z dowolnego miejsca (domyślnie).
  • internal: dostępny w obrębie tego samego modułu.
  • protected: dostępny w swojej klasie i jej podklasach.
  • private: dostępny tylko wewnątrz klasy, w której jest zadeklarowany.

Właściwości służą do zarządzania dostępem do danych klasy. Mogą mieć getter i setter, które można nadpisać, aby dodać logikę podczas odczytu lub zapisu wartości.

class Person {
    // Prywatne pole, dostępne tylko w klasie
    private var _name: String = ""

    // Właściwość z publicznym getterem i prywatnym setterem
    var name: String
        get() = _name
        private set(value) {
            _name = value
        }

    // Funkcja publiczna do ustawiania imienia, kontrolująca wejście
    fun setName(newName: String) {
        if (newName.isNotBlank()) {
            name = newName
        } else {
            println("Imię nie może być puste")
        }
    }
}

fun main() {
    val person = Person()
    person.setName("Alice") // Używamy kontrolowanej metody do zmiany
    println(person.name)    // Odczyt wartości przez getter
    // person.name = "Bob"   // Błąd kompilacji, setter jest prywatny
}