Sobes.tech
Junior — Middle

Selgitage, mis on suletud klassid Kotlinis ja kuidas neid kasutatakse

sobes.tech AI

Vastus AI-lt

Kotlinis ei ole spetsiaalset mõistet "sulgunud klassid" (closed classes) kui eraldi tüüpi, kuid on sarnane kontseptsioon — sulgunud klassid (sealed classes).

Sealed klass piirab päriluse hierarhiat: kõik selle klassi alamklassid peavad olema deklareeritud samas failis. See võimaldab kompilaatoril teada kõiki võimalikke alamklasse ja kasutada neid näiteks when väljendites ilma vajaduseta kirjutada else haru.

Sealed klassid on mugavad piiratud valiku modelleerimiseks, näiteks olekute või sündmuste jaoks.

Näide:

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("Andmed: ${result.data}")
        is Result.Error -> println("Viga: ${result.error.message}")
    }
}

Kui "sulgunud klassid" tähendab klasse private või internal modifikatoriga, siis need on piiratud nähtavusega klassid: private — nähtav ainult failis, internal — modulisis.