Sobes.tech
Junior — Middle

Обяснете какви са затворените класове в Kotlin и как се използват

sobes.tech AI

Отговор от AI

В Kotlin няма специално понятие за "затворени класове" (closed classes) като отделен тип, но има подобна концепция — sealed класове (запечатани класове).

Sealed класът ограничава йерархията на наследяване: всички подкласове на такъв клас трябва да бъдат обявени в същия файл. Това позволява на компилатора да знае всички възможни подкласове и да ги използва, например, в изрази when без необходимост да се пише клон else.

Използването на sealed класове е удобно за моделиране на ограничен набор от варианти, например състояния или събития.

Пример:

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("Данни: ${result.data}")
        is Result.Error -> println("Грешка: ${result.error.message}")
    }
}

Ако "затворени класове" се разбира като класове с модификатора private или internal, то това са класове с ограничена видимост: private — видими само в рамките на файла, internal — в рамките на модула.