Ответ
Основное отличие data class от обычного class в Kotlin - автоматическая генерация полезных методов для работы с данными:
- Автоматические методы: data class генерирует
equals(),hashCode(),toString(),copy()иcomponentN()функции - Деструктуризация: data class поддерживает деструктуризацию на свойства
- Основное назначение: data class предназначен для хранения данных, обычный class - для логики
Пример:
data class User(val name: String, val age: Int)
// Автоматически получаем:
// toString(): User(name=John, age=30)
// copy(), equals(), hashCode()
class Service {
fun process() { /* логика */ }
}
Ограничения data class:
- Должен иметь хотя бы один параметр в конструкторе
- Параметры должны быть
valилиvar - Не может быть
open,abstract,sealedилиinner