Ответ
В Kotlin data class автоматически генерирует equals(), hashCode(), toString() и другие методы. При этом в equals() и hashCode() включаются только свойства, объявленные в первичном конструкторе текущего класса. Поля родительского класса не учитываются.
Пример:
open class Parent(val id: Int)
data class Child(val name: String, id: Int) : Parent(id)
fun main() {
val a = Child("A", 1)
val b = Child("A", 2)
println(a == b) // true, так как сравнивается только `name`
}
Если нужно учитывать поля родителя, нужно переопределить equals()/hashCode() вручную.