В чем разница между Class, Data Class и Sealed Class

«В чем разница между Class, Data Class и Sealed Class» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Class – обычный класс, может содержать свойства, методы, конструкторы. Нужен для базовой логики и состояния.

class User(val name: String)

Data Class – автоматически генерирует equals(), hashCode(), toString(), copy(). Оптимален для хранения данных.

data class User(val name: String, val age: Int)

Sealed Class – ограниченная иерархия классов, все подклассы известны на этапе компиляции. Используется для безопасного pattern matching (when).

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
}