Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: enum, class, sealed class, constructor, inheritance

Чем sealed-классы отличаются от enum-классов, и как у них работают конструкторы?

Проверяет понимание различий между sealed class и enum class и особенностей их конструкторов.

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

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

Длинный ответ

1. enum class:

  • Фиксированный список объектов-констант

  • Однородные элементы без разной логики

  • Конструктор общий для всех перечислений:

enum class Direction(val dx: Int, val dy: Int) {
  	NORTH(0,-1), EAST(1,0), SOUTH(0,1), WEST(-1,0)
}

2. sealed class:

  • Поддерживает различные подклассы со своими конструкторами

  • Каждый подкласс может быть data class или object

  • Конструкторы определяются в каждом подклассе:

sealed class Shape {
  	data class Circle(val r: Double): Shape()
  	data class Rect(val w: Double, val h: Double): Shape()
  	object Point: Shape()
}

3. Ключевые отличия:

  • enum: однородность, ограниченный набор, лучше для простых вариантов без состояния

  • sealed: разнородность, расширяемость подтипами, разный набор данных

4. Когда использовать:

  • enum для простых статусов или флагов

  • sealed для сложных иерархий с разным состоянием и поведением

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#enum

#class

#sealed class

#constructor

#inheritance

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.