Sobes.tech
Back to questions
Junior — Middle
75

Можно ли создавать наследование с использованием data class в Kotlin?

Companies where asked
RedLab

Answer from AI

sobes.tech AI

В Kotlin data class по умолчанию не может быть открытым для наследования, так как они объявлены с модификатором final. Это сделано для сохранения семантики и автоматической генерации методов, таких как equals(), hashCode(), toString(), а также copy().

Однако, начиная с Kotlin 1.1, можно явно сделать data class открытым для наследования, добавив модификатор open:

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

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

Но стоит помнить, что наследование от data class — редкая практика и может привести к неожиданным результатам, так как методы copy() и componentN() не учитывают свойства подкласса. Поэтому обычно рекомендуется использовать композицию вместо наследования с data class.