В чем отличие классов sealed и enum в Kotlin?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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
}

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку