Sobes.tech
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
}