Sobes.tech
Назад к вопросам
Junior — Middle
67

Какое основное отличие между sealed классами и enum в языке программирования?

Компании, где спрашивали
ИннотехИннотех
Dogma
БрайтСофт
ПромсвязьбанкПромсвязьбанк
ПСБ
Платформа Трим
IBS
Леруа МерленЛеруа Мерлен

Ответ от нейросети

sobes.tech AI

Основное отличие между sealed классами и enum в языках программирования (например, Kotlin) заключается в их назначении и возможностях:

  • Enum — это набор фиксированных констант, каждая из которых представляет одно из возможных значений. Enum подходит для случаев, когда нужно ограничить набор вариантов и работать с ними как с единым типом.

  • Sealed класс — это абстрактный класс, который ограничивает наследование только определённым набором подклассов, объявленных в том же файле. Это позволяет создавать иерархии типов с разными состояниями и поведением, сохраняя при этом контроль над расширяемостью.

Пример:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val error: Throwable) : Result()
}

enum class Direction {
    NORTH, SOUTH, EAST, WEST
}
  • Enum — простой набор значений без дополнительной логики.
  • Sealed класс — позволяет хранить разные данные и методы в каждом подклассе, что удобно для моделирования сложных состояний.

Таким образом, sealed классы более гибкие и подходят для моделирования сложных вариантов с разной логикой, а enum — для простых фиксированных наборов значений.