有没有更好的方法呢?
scala> case class A(x : Int)
defined class A
scala> case class B(override val x : Int, y : Int) extends A(x)
defined class B
我用B扩展A并添加一个额外的成员变量。不必在x之前写override val
。
答案 0 :(得分:15)
我强烈建议不要从案例类继承。它对equals和hashCode产生了惊人的影响,并且在Scala 2.8中已被弃用。
相反,在特征或抽象类中定义x
。
scala> trait A { val x: Int }
defined trait A
scala> case class B(val x: Int, y: Int) extends A
defined class B