Проверяет знание конструкции для ограничения иерархии типов.
sealed-класс или интерфейс ограничивает набор подклассов, все из которых должны быть объявлены в том же файле. Это позволяет компилятору знать все реализации и использовать when без ветки else, гарантируя покрытие всех случаев и повышая безопасность кода.
Определение:
sealed class Result
data class Success(val data: String): Result()
data class Error(val exception: Throwable): Result()Преимущества:
Компилятор знает все подклассы, проверяет exhaustiveness when.
Удобны для описания состояний и событий (state machines).
Использование в when:
when(result) {
is Success -> showData(result.data)
is Error -> showError(result.exception)
}Особенности:
Подклассы могут быть data class или object.
Начина с Kotlin 1.5 можно объявлять в разных файлах при sealed interface.