Scala 问题扩展类-重写私有成员

Scala 问题扩展类-重写私有成员,scala,Scala,我正在做一个扩展类的简单scala应用程序。 我得到了一个我不理解的错误,即Location类中的错误是“private[this]val xc:Int” 请查找下面的代码 class Point(xc:Int ,yc:Int) { var x:Int =xc; var y:Int =yc; def move(dx:Int ,dy:Int) { x=x+dx; y=y+dy; println("Point x location for Point Class =

我正在做一个扩展类的简单scala应用程序。 我得到了一个我不理解的错误,即Location类中的错误是“private[this]val xc:Int”

请查找下面的代码

class Point(xc:Int ,yc:Int) {
    var x:Int =xc;
var y:Int =yc;

def move(dx:Int ,dy:Int)
{
    x=x+dx;
    y=y+dy;
    println("Point x location for Point Class = "+x)
    println("Point y location for Point Class = "+y)  
}
}

class Location(override val xc: Int, override val yc: Int,
   val zc :Int) extends Point(xc, yc){
   var z: Int = zc

   def move(dx: Int, dy: Int, dz: Int) {
      x = x + dx
      y = y + dy
      z = z + dz
      println ("Point x location : " + x);
      println ("Point y location : " + y);
      println ("Point z location : " + z);
   }
}
object Runner
{
    def main(arg : Array[String])
    {
//val pt = new Point(4,5);
//pt.move(4, 5)

val lo = new Location(1,2,3);
lo.move(1, 2,3)
    }
}

可能是因为在scala中重写私有/受保护成员时出现问题

可以通过以下方式声明类点来解决此问题:

class Point(val xc:Int , val yc:Int)
*当您不在参数中写入val时,它们是私有成员

这起作用:

class Point(var x: Int, var y: Int) {
  def move(dx: Int, dy: Int) = {
    x=x+dx
    y=y+dy
  }
}

class Location(
  x: Int,
  y: Int,
  var z :Int) extends Point(x, y) {

  def move(dx: Int, dy: Int, dz: Int) = {
    super.move(dx, dy)
    z = z + dz
  }
}

object Runner {
  def main(arg : Array[String]) = {
    val pt = new Point(4,5)
    pt.move(4, 5)

    val lo = new Location(1,2,3)
    lo.move(1, 2,3)
  }
}

使用
类点(val xc:Int,val yc:Int)
而不是
类点(xc:Int,yc:Int)
删除了Scala 2.11上的
覆盖
语句,这对我很有效。