Sobes.tech
Junior — Middle

Kotlin'da sealed sinflar va enum sinflar o'rtasidagi farq nima va ularning asosiy farqlari qanday?

sobes.tech AI

AIdan javob

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
}