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.