Data-классы в Kotlin предназначены для хранения данных. Они автоматически генерируют полезные методы, такие как equals(), hashCode(), toString(), copy() и componentN().
Sealed-классы используются для представления ограниченной иерархии классов. Все подклассы sealed-класса должны быть объявлены в том же файле. Это позволяет компилятору проверить все возможные подтипы при использовании выражений when, обеспечивая исчерпывающую обработку (exhaustive when).
Основные различия:
| Признак | Data-класс | Sealed-класс |
|---|---|---|
| Назначение | Хранение данных | Ограниченная иерархия классов |
| Методы | Автоматически генерируются | Не генерируются автоматически |
| Подклассы | Могут быть где угодно | Ограничены тем же файлом |
| Использование | Как POJO (Plain Old Java Object) | Для представления конечного числа состояний |
| Абстрактность | Не могут быть abstract | Могут быть abstract |
Пример data-класса:
kotlin
Пример sealed-класса:
kotlin