Ответ
Sealed классы в Kotlin позволяют ограничить иерархию классов — все подклассы должны быть объявлены в том же файле или внутри sealed класса.
Особенности:
- Компилятор знает все возможные наследники, что полезно для
whenбезelse. - Нельзя создать экземпляр sealed класса напрямую.
- Подклассы могут быть
data class,objectили обычными классами.
Пример:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result()
}
fun handleResult(result: Result) = when(result) {
is Result.Success -> println(result.data)
is Result.Error -> println(result.message)
Result.Loading -> println("Loading...")
}