Junior — Middle
84
Kotlin-те sealed сыныптар мен enum сыныптар арасындағы айырмашылықтар қандай және олардың негізгі айырмашылықтары қандай?
Сұралған компаниялар
Viasat tech
AI-дан жауап
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
}