class Base(val name:String, val number:int) extends Sometrait {
def copy(name:String=this.name, number:int=this.number){
new Base(name, number)
}
}
我想写:
case class SomeCase(val name:String, val number:int, val id:int)extends Base(String, number){
...
}
但是编译器总是告诉我:
value **** needs `override' modifier social.scala /scalatest/src/scalatest line 35 Scala
但我真的很想做的就是固有而不是覆盖,怎么做。
(我需要将子类作为案例类,因为我很容易在光滑中使用。(here是我的另一个问题,如何在类中使用类作为表内容类,有人给出我真的很好的回答,但我仍然弥漫。))
答案 0 :(得分:0)
由于name
和number
中的Base
和SomeCase
字段都定义为val
而没有任何修饰符,例如private
,因此它们都是公众成员并参与继承。由于这些字段在基类和子类中具有相同的名称,因此您必须在子类中override
和val name
之前添加val number
修饰符:
case class SomeCase(override val name: String,
override val number: Int,
val id: Int) extends Base(name, number) { ... }