我正在学习斯卡拉,所以如果这是一个愚蠢的问题请耐心等待。我正在试验案例类并尝试以下内容: -
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
}
案例类不可能实现抽象方法吗?
答案 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 class
或trait
作为基础,其中一个或多个(通常不止一个)case class
es 始终位于继承树的叶子< / em>的