Sobes.tech
Junior — Middle

Magyarázza el, mik azok a zárt osztályok Kotlinban, és hogyan használják őket

sobes.tech MI

Válasz az MI-től

Kotlinban nincs külön fogalom a "zárt osztályokról" (closed classes) mint külön típus, de van egy hasonló koncepció — a sealed osztályok (lezárt osztályok).

A sealed osztály korlátozza az öröklődési hierarchiát: minden ilyen osztály alosztályát ugyanabban a fájlban kell deklarálni. Ez lehetővé teszi a fordítónak, hogy minden lehetséges alosztályt ismerjen, és például a when kifejezésekben használja őket anélkül, hogy else ágat kellene írni.

A sealed osztályok használata kényelmes a korlátozott lehetőségek, például állapotok vagy események modellezésére.

Példa:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val error: Throwable) : Result()
}

fun handleResult(result: Result) {
    when(result) {
        is Result.Success -> println("Adatok: ${result.data}")
        is Result.Error -> println("Hiba: ${result.error.message}")
    }
}

Ha a "zárt osztályok" alatt a private vagy internal módosítóval ellátott osztályokat értjük, akkor ezek olyan osztályok, amelyek láthatósága korlátozott: private — csak a fájlon belül látható, internal — a modullal belül.