Ответ
Да, data class может реализовывать интерфейсы. Data class - это обычный класс с дополнительными возможностями (автогенерацией equals(), hashCode(), toString() и т.д.), поэтому он может реализовывать интерфейсы как и любой другой класс.
Пример:
interface Printable {
fun print()
}
data class Person(val name: String, val age: Int) : Printable {
override fun print() {
println("Person: $name, $age years")
}
}
Ограничения:
- Data class не может быть abstract, open, sealed или inner
- Data class не может наследоваться от другого класса (только от Any)
- Data class может реализовывать любое количество интерфейсов