"方法..无法覆盖"在抽象父级中使用重载方法时出错

时间:2015-08-19 09:46:53

标签: scala

我是Scala的新手,无法找到实现我想要的方法。 我想在父类中使用抽象方法,如此

def copy():M

然后在每个子类中,此方法应具有不同数量的参数,如

def copy(id: Int, title: String):M

现在我尝试

override def copy(id: Int, title: String):M 

我有编译错误

  

方法复制不会覆盖任何内容

1 个答案:

答案 0 :(得分:1)

如果您的参数类型相同,您可以像这样编写方法签名

def copy(args: SomeType*):M

如果没有,您可以使用抽象类型

trait T { 
  type CopyParam
  def copy(c: CopyParam): T 
}

case class SomeCopyParam(i: Int, s: String)

class A extends T { 
  type CopyParam = SomeCopyParam 
  def copy(c: SomeCopyParam): A = {
   println(c.i + c.s)
   this // some changed copy should be here
  } 
}

并像这样使用它:

val original = new A()
val copy = original.copy(SomeCopyParam(1, "a"))