子类中具有派生参数的构造函数
Constructor with derived parameters in subclasses
我定义了一个 Trait Box 和两个继承自 Box 的 Case 类 RedBox 和 BlueBox。我系统的那部分工作正常。现在,我想创建一个新的元素层次结构,以便可以通过这种方式将具有可变 属性 位置的基本元素 Token 扩展到特定类型的 Box:
abstract class Token {
var position: Box
}
class RedToken(position: RedBox, val marked: Boolean) extends Token {
def test() = {
position = RedBox()
}
}
我需要位置 属性 可变,但编译器向我抛出“重新分配给 val”。然后,如果我修改构造函数签名以强制 var:
class RedToken(var position: RedBox, val marked: Boolean) extends Token {
}
...我得到“class RedToken 需要是抽象的,因为 class 类型 Box 的令牌中的变量位置未定义”。我不明白发生了什么,我可以帮忙吗?谢谢
使用generic classes是为了RedToken#position: RedBox
trait Box
class RedBox extends Box
abstract class Token[T <: Box] {
var position: T
}
class RedToken(var position: RedBox) extends Token[RedBox] {
}
我定义了一个 Trait Box 和两个继承自 Box 的 Case 类 RedBox 和 BlueBox。我系统的那部分工作正常。现在,我想创建一个新的元素层次结构,以便可以通过这种方式将具有可变 属性 位置的基本元素 Token 扩展到特定类型的 Box:
abstract class Token {
var position: Box
}
class RedToken(position: RedBox, val marked: Boolean) extends Token {
def test() = {
position = RedBox()
}
}
我需要位置 属性 可变,但编译器向我抛出“重新分配给 val”。然后,如果我修改构造函数签名以强制 var:
class RedToken(var position: RedBox, val marked: Boolean) extends Token {
}
...我得到“class RedToken 需要是抽象的,因为 class 类型 Box 的令牌中的变量位置未定义”。我不明白发生了什么,我可以帮忙吗?谢谢
使用generic classes是为了RedToken#position: RedBox
trait Box
class RedBox extends Box
abstract class Token[T <: Box] {
var position: T
}
class RedToken(var position: RedBox) extends Token[RedBox] {
}