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

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

Компании, где спрашивали
СовкомбанкСовкомбанк
Viasat tech
amoCRMamoCRM

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

sobes.tech AI

Sealed классы и enum классы в Kotlin служат для ограничения иерархий классов, но имеют разные цели и особенности:

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

  • Enum классы предназначены для определения фиксированного набора констант (перечислений). Каждый элемент enum — это объект этого класса.

Основные различия:

Характеристика Sealed класс Enum класс
Назначение Ограничение наследования Определение фиксированного набора констант
Подклассы Могут быть разными классами Только константы enum
Расположение подклассов В том же файле Все элементы перечислены внутри enum
Возможность иметь состояние и поведение Да, подклассы могут иметь разные свойства и методы Да, но все элементы — экземпляры одного класса

Пример sealed класса:

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

Пример enum:

enum class Direction {
    NORTH, SOUTH, EAST, WEST
}