Kotlin:如何在数据class中继承属性
Kotlin: How to inherit property in data class
我有这样声明的抽象令牌 class:
abstract class Token(var index: Int = 0) {
open fun merge(toMerge: Token): Token? {
return null
}
}
我想继承数据class中的索引属性,像这样:
data class CloseLoop(index: Int, var openLoopIndex: Int = 0) : Token(index)
但它给我错误 Data class primary constructor must have only property (val / var) parameters
我需要做什么来解决这个问题?
至少有两个解决方法:
在数据中属性open
和override它class主构造函数声明:
abstract class Token(open var index: Int = 0)
data class CloseLoop(
override var index: Int,
var openLoopIndex: Int = 0
) : Token(index)
用另一个名称声明一个 属性 并用它初始化基础 class:
data class CloseLoop(val theIndex: Int, var openLoopIndex: Int = 0) : Token(theIndex)
如果你觉得合适,就把它设为private
。
我有这样声明的抽象令牌 class:
abstract class Token(var index: Int = 0) {
open fun merge(toMerge: Token): Token? {
return null
}
}
我想继承数据class中的索引属性,像这样:
data class CloseLoop(index: Int, var openLoopIndex: Int = 0) : Token(index)
但它给我错误 Data class primary constructor must have only property (val / var) parameters
我需要做什么来解决这个问题?
至少有两个解决方法:
在数据中属性
open
和override它class主构造函数声明:abstract class Token(open var index: Int = 0) data class CloseLoop( override var index: Int, var openLoopIndex: Int = 0 ) : Token(index)
用另一个名称声明一个 属性 并用它初始化基础 class:
data class CloseLoop(val theIndex: Int, var openLoopIndex: Int = 0) : Token(theIndex)
如果你觉得合适,就把它设为
private
。