小编non*_*epr的帖子

Scala:我们为什么不能做super.val?

我正在从JavaTpoint练习这段代码以学习Scala中的继承。但是我无法从初始化为零的Vehicle类中访问成员Bike。我尝试通过超级类型引用进行操作,但它仍显示覆盖的值。为什么不允许访问超类字段并定向到覆盖的子类字段(速度)。这是代码和输出。在此先感谢。

class Vehicle {
  val speed = 0
  println("In vehicle constructor " +speed)
  def run() {
    println(s"vehicle is running at $speed")
  }
}

class Bike extends Vehicle {
  override val speed = 100
  override def run() {
    super.run()
    println(s"Bike is running at $speed km/hr")
  }
}

object MainObject3 {
  def main(args:Array[String]) {
    var b = new Bike()
    b.run()
    var v = new Vehicle()
    v.run()
    var ve:Vehicle=new Bike()
    println("SuperType reference" + ve.speed)
    ve.run()
  }
}
Run Code Online (Sandbox Code Playgroud)

如何使用Bike实例获得结果。

overriding scala member instance access

6
推荐指数
1
解决办法
1981
查看次数

标签 统计

access ×1

instance ×1

member ×1

overriding ×1

scala ×1