为什么不能在scala中覆盖可变变量?
class Abs(var name: String){
}
class AbsImpl(override var name: String) extends Abs(name){
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了以下编译时错误: -
variable name cannot override a mutable variable
如果name声明为val,那么上面的代码工作正常.
虽然我理解为什么a var不能覆盖valin子类,反之亦然,但我无法理解为什么Scala不允许defin子类覆盖var超类中的
class Car {
var age = 32
}
class SedanCar extends Car {
override def age = 54
}
Run Code Online (Sandbox Code Playgroud)
因为var可变,为什么不允许a def覆盖呢?有人可以帮我理解这个吗?
scala liskov-substitution-principle immutability mutability uap
scala ×2
immutability ×1
inheritance ×1
liskov-substitution-principle ×1
mutability ×1
overriding ×1
uap ×1