Sobes.tech
Назад к вопросам
Junior — Middle
66

Можно ли в Kotlin создавать наследуемые data-классы от других классов?

Компании, где спрашивали
Viasat tech

Ответ от нейросети

sobes.tech AI

В Kotlin data-классы по умолчанию являются финальными (final), то есть их нельзя наследовать. Если попытаться сделать data-класс наследуемым, компилятор выдаст ошибку.

Однако, начиная с Kotlin 1.1, можно объявить data-класс как open, чтобы разрешить наследование, но это не рекомендуется и имеет ограничения. В частности, наследуемый data-класс не может быть data-классом.

Пример:

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

class Employee(name: String, age: Int, val position: String) : User(name, age)

Но чаще всего data-классы используются именно для хранения данных и не предполагают наследование. Если нужна иерархия, лучше использовать обычные классы или интерфейсы.