Middle
154
questionbank
В чем отличие классов sealed и enum в Kotlin?
Answer from AI
sobes.tech AI
Sealed классы используются для представления ограниченной иерархии наследования, где все подклассы известны на этапе компиляции. Enum классы используются для представления фиксированного набора констант.
Основные отличия:
- Наследование: Sealed классы могут иметь подклассы, в то время как enum классы не могут наследоваться.
- Экземпляры: Sealed классы могут иметь несколько экземпляров подклассов, а enum классы — только один экземпляр для каждой константы.
- Состояние: Экземпляры sealed классов могут содержать состояние (свойства, методы), в то время как константы enum обычно представляют собой простые значения.
whenвыражения:whenвыражения с sealed классами являются исчерпывающими (компилятор требует обработки всех возможных подклассов), в то время как с enum классами это не всегда так, если не используетсяelse.
Пример Sealed класса:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result() // Одиночный экземпляр
}
Пример Enum класса:
enum class Status {
SUCCESS,
ERROR,
LOADING
}