Scala 问题扩展类-重写私有成员
我正在做一个扩展类的简单scala应用程序。 我得到了一个我不理解的错误,即Location类中的错误是“private[this]val xc:Int” 请查找下面的代码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 =
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上的覆盖
语句,这对我很有效。