How to subclass an object with a var in its primary constructor
scala
Solution
You don't need to declare the `var` in the subclass constructor signature:
class B (val name: String, /* note no var */ updateCount: Int) extends A(updateCount) {
//...
}
This also extends to classes with `val`s in their constructors also:
scala> class C(val i: Int)
defined class C
scala> class D(j: Int) extends C(j)
defined class D
Problem
I'm wanting to do something like this: ``` class A (var updateCount: Int) { } class B (val name: String, var updateCount: Int) extends A(updateCount) { def inc(): Unit = { updateCount = updateCount + 1 } } var b = new B("a", 10) println(b.name) println(b.updateCount) b.updateCount = 9999 b.inc println(b.updateCount) ``` but the compiler doesn't like it. ``` (fragment of extend.scala):5: error: error overriding variable updateCount in class A of type Int; variable updateCount needs `override' modifier class B (val name: String, var updateCount: Int) extends A(updateCount) { ``` Adding override on updateCount doesn't work either. What's the clean way to do this?