我想在构造函数中覆盖Trait中的一个可变变量.但它会抱怨"在Int类型的特征A中覆盖变量a;变量a不能覆盖可变变量".为什么scala不允许我这样做?对此最好的做法是什么?谢谢
trait A{
  var a:Int = _
}
class B(override var a:Int) extends A
Mal*_*off 13
你不能覆盖它(原因是现在没有向我揭示,除了,无论如何都可以修改变量,所以为什么要覆盖它们),但你可以保留声明的变量uninitialised并将后者委托给B:
trait A {
  var a: Int
}
class B(var a: Int) extends A
覆盖仅适用于方法.覆盖变量没有意义.如果用另一个相同类型的变量覆盖变量会有什么变化?如果有的话,价值和那个只能随时设置,因为它是一个变量:
trait A { 
  var a: Int = _ 
}
class B (a0: Int) extends A {
  a = a0
}
但这可能不是你想要的.你也可以留下getter和setter摘要:
trait A {
  def a: Int
  def a_=(value: Int): Unit
}
class B(var a: Int)
这相当于
trait A {
  var a: Int
}