错误:case类实现父的抽象方法

时间:2013-03-27 13:48:53

标签: scala

我正在学习斯卡拉,所以如果这是一个愚蠢的问题请耐心等待。我正在试验案例类并尝试以下内容: -

case class A {
    def eval(x: Int): Boolean
}

case class B extends A

case class C extends A {
    override def eval(x: Int): Boolean = true
    // Compiler error is - 
    // Multiple markers at this line
    // - Missing closing brace `}' assumed here
    // - expected start of definition
}

案例类不可能实现抽象方法吗?

2 个答案:

答案 0 :(得分:3)

案例类不能继承另一个案例类(编译器做了很多魔术)。在scala中,您通常会使用特征,因此您的代码将如下所示:

trait A {
  def eval(x: Int): Boolean
}

case class C() extends A {
  override def eval(x: Int): Boolean = true
}

答案 1 :(得分:0)

abstract case class是一个矛盾。不建议从case class扩展并通过制作case class摘要,强制将其子类化为具有可实例化的类。

常见模式是abstract classtrait作为基础,其中一个或多个(通常不止一个)case class es 始终位于继承树的叶子< / em>的