Ответ
Да, можно, но это не имеет особого смысла. data class уже автоматически делает все свойства public (если не указано иное), а модификатор open разрешает наследование.
Однако, data class по умолчанию final, и если нужно разрешить наследование, то open можно добавить:
open data class User(val name: String, val age: Int)
Но учти:
- Наследование от
data classможет нарушить контрактequals()/hashCode(). - Копирование (
copy()) будет работать только для текущего класса, а не для наследников.
Лучше избегать такого подхода, если нет четкой необходимости.