case类如何继承类(非抽象)方法和值? (阶)

时间:2014-08-06 06:37:55

标签: scala oop inheritance

我有一个Base类有一些函数和val,我想在我固有的case类中固有它们怎么做? 这是我的基类:

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是我的另一个问题,如何在类中使用类作为表内容类,有人给出我真的很好的回答,但我仍然弥漫。))

1 个答案:

答案 0 :(得分:0)

由于namenumber中的BaseSomeCase字段都定义为val而没有任何修饰符,例如private,因此它们都是公众成员并参与继承。由于这些字段在基类和子类中具有相同的名称,因此您必须在子类中overrideval name之前添加val number修饰符:

case class SomeCase(override val name: String, 
                    override val number: Int,
                    val id: Int) extends Base(name, number) { ... }