scala override关键字不起作用

时间:2017-04-05 10:56:37

标签: scala

我正在编写一个简单的代码,通过覆盖子类中超类的值来学习Scala中的继承::

class point(xy: Int, ry: Int) {

  var x: Int = xy
  var y: Int = ry

    def move(dx: Int, dy: Int){

    x = x + dx
    y = y + dy

    println (x);
    println (y);

  }
}

class next(override val xy: Int, override val ry: Int, val tet: Int) extends point(xy,ry){ 
    var r: Int = tet

    def move(dx: Int, dy: Int, dz: Int ){

    x = x + dx
    y = y + dy
    r = r + tet

      println ("Point x location : " + x);
      println ("Point y location : " + y);
      println ("Point z location : " + r);
}
}

object Demo {
   def main(args: Array[String]) {
      val loc = new next(10, 20, 15);

      // Move to a new location
      loc.move(10, 10, 5);
   }
}

我使用关键字"覆盖"同时扩展我的超级课程"指向"在我的子类" next",但我得到以下错误::

    "value ry override nothing"
    "value xy override nothing"

但我覆盖了它们,但是当我删除关键字时,代码没有错误。我的代码中是否缺少某些内容?

的问候,Amitesh

1 个答案:

答案 0 :(得分:5)

你的积分课没有xyry字段/方法,所以你确实没有覆盖任何东西。如果您希望将这些构造函数参数转换为方法,请使用class point(val xy: Int, val ry: Int)