Kotlin-数据类可以继承

时间:2019-04-16 05:13:38

标签: android kotlin

我需要从数据类B继承数据类A,我知道在科特林

中这是不可行的

问题1:
 为什么这不可行?

问题2:
与此类似的解决方案可能是什么?

示例

 data class A(val data1 : String)

 data class B(val data2 : String) : A()

我如何在Kotlin中实现这一目标?任何帮助

2 个答案:

答案 0 :(得分:3)

当需要两个数据类时,唯一的解决方案是再创建一个抽象类,并从中派生这两个数据类。您需要注意,kotlin中的数据类基于主构造函数创建哈希码,equals和toString以及其他方法,这就是为什么您需要在数据类构造函数中重写Base类中的字段的原因。

abstract class Base(open val data1: String)

data class A(override val data1: String): Base(data1)

data class B(override val data1: String,  val data2: String): Base(data1)

答案 1 :(得分:0)

您必须像下面这样

abstract class A(open val data1 : String) {}

data class B(val data2 : String) : A(data1)