Этот вопрос проверяет понимание особенностей data class в Kotlin и их отличий от обычных классов.
data class стоит использовать, когда класс нужен только для хранения данных и автоматической генерации equals(), hashCode(), toString(), copy(). Обычный класс лучше, если требуется сложная логика или наследование.
data class автоматически генерирует полезные методы для работы с данными:
equals() и hashCode() – для сравнения объектов.
toString() – для удобного вывода.
copy() – для создания копии с изменёнными полями.
Когда использовать data class:
Для DTO (Data Transfer Objects).
Для хранения состояния (например, User(name, age)).
Когда нужна структурная проверка равенства (==).
Когда использовать обычный класс:
Если класс содержит сложную логику.
Если требуется наследование (Kotlin data class не может быть open).
Если методы copy() или деструктуризация не нужны.
Пример:
data class User(val name: String, val age: Int) // Подходит для данных
class Logger { fun log(message: String) } // Обычный класс для логики