Sobes.tech
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.