Kotlin:如何inheritance数据类中的属性
我有这样的抽象令牌类:
abstract class Token(var index: Int = 0) { open fun merge(toMerge: Token): Token? { return null } }
我想inheritance数据类中的索引属性,如下所示:
data class CloseLoop(index: Int, var openLoopIndex: Int = 0) : Token(index)
但它给我错误Data class primary constructor must have only property (val / var) parameters
我需要做什么来解决这个问题?
至少有两个解决方法:
-
open
属性并在数据类主构造函数声明中覆盖它:abstract class Token(open var index: Int = 0) data class CloseLoop( override var index: Int, var openLoopIndex: Int = 0 ) : Token(index)
-
用另一个名字声明一个属性并用它初始化基类:
data class CloseLoop(val theIndex: Int, var openLoopIndex: Int = 0) : Token(theIndex)
如果您觉得合适,请将其设为不
private
。