首页 > 解决方案 > 如何让数据类(Kotlin)从超类扩展并继承超类字段之一?

问题描述

我尝试为我的一些数据类创建自定义 toString() 方法。但我只想定义一次 fun toString 的覆盖。

这将是我的超级班:

abstract class Id(val value: String) {
   override fun toString(): String {
       return value
   }
}

现在我想通过扩展超类 ID 在我的一些数据类中使用自定义的 toString() 方法:

data class MyId(val v: String): Id(v)

但是,这会在 MyId 中为“v”引入一个辅助字段和吸气剂,这不是我想要的。使用“value”而不是“v”给了我一个问题:“value”隐藏了超类型“Id”的成员。我想重用 Id 中定义的“值”字段和 getter。我不想介绍一个新的。

我该如何纠正?

标签: kotlinoverridingdata-class

解决方案


我不太确定你想做什么,但你可以这样做

abstract class Id(open val value: String) {
    override fun toString(): String {
        return value
    }
}

data class MyId(override val value: String): Id(value)

推荐阅读