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.