Обяснете какви са затворените класове в 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 — в рамките на модула.