Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala case类如何定义固有类(非抽象类)方法和值?(斯卡拉)_Scala_Oop_Inheritance - Fatal编程技术网

Scala case类如何定义固有类(非抽象类)方法和值?(斯卡拉)

Scala case类如何定义固有类(非抽象类)方法和值?(斯卡拉),scala,oop,inheritance,Scala,Oop,Inheritance,我有一个基类有一些函数和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:Strin

我有一个基类有一些函数和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
但我真的想做的只是做为内在的而不是凌驾,如何去做

我需要把child类作为case类,因为它在slick中很容易使用。是关于如何在slick中将类用作表内容类的另一个问题,有人给了我非常好的答案,但我仍然大量使用。

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

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