Объясните, что такое закрытые классы в Kotlin и как они используются
Ответ от нейросети
sobes.tech 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("Data: ${result.data}")
is Result.Error -> println("Error: ${result.error.message}")
}
}
Если же под "закрытыми классами" имелись в виду классы с модификатором private или internal, то это классы с ограниченной областью видимости: private — видимы только внутри файла, internal — внутри модуля.