Junior — Middle
Objasnite šta su zatvorene klase u Kotlinu i kako se koriste
sobes.tech АИ
Одговор од АИ
U Kotlinu ne postoji poseban koncept "zatvorenih klasa" (closed classes) kao poseban tip, ali postoji slična ideja — sealed klase (pečatirane klase).
Sealed klasa ograničava hijerarhiju nasleđivanja: sve podklase takve klase moraju biti deklarisane u istom fajlu. To omogućava kompilatoru da zna sve moguće podklase i da ih koristi, na primer, u izrazima when bez potrebe da piše granu else.
Korišćenje sealed klasa je zgodno za modelovanje ograničenog skupa opcija, na primer, stanja ili događaja.
Primer:
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("Podaci: ${result.data}")
is Result.Error -> println("Greška: ${result.error.message}")
}
}
Ako "zatvorene klase" podrazumevaju klase sa modifikatorom private ili internal, onda su to klase sa ograničenom opsegom vidljivosti: private — vidljive samo unutar fajla, internal — unutar modula.