Может ли data class имплементировать интерфейс

«Может ли data class имплементировать интерфейс» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, 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")
    }
}

Ограничения:

  1. Data class не может быть abstract, open, sealed или inner
  2. Data class не может наследоваться от другого класса (только от Any)
  3. Data class может реализовывать любое количество интерфейсов