这是一个令我困惑的例子。何时在Scala类中使用覆盖?
class Point(val xc: Int, val yc: Int) {
var x: Int = xc
var y: Int = yc
def move(dx: Int, dy: Int) {
x = x + dx
y = y + dy
println ("x 的坐标点 : " + x);
println ("y 的坐标点 : " + 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 ("x 的坐标点 : " + x);
println ("y 的坐标点 : " + y);
println ("z 的坐标点 : " + z);
}
}
为什么方法move
并不需要一个override
修改?它不是类Point中的抽象方法,我认为它应该用“覆盖”来装饰。实际上,当我添加“覆盖”时,会发生错误。
而对于xc,yc,为什么“覆盖”是一个nessesary?
我真的很困惑。
我有Python的经验和很少的Java经验。
任何帮助将不胜感激,谢谢!
因为'move'不'Point'抽象?它只是一种方法。当你调用'myLocation.move()'时,除非你在你的子类中覆盖'',否则它会调用'Point.move()'。顺便说一下,移动和位置的移动签名完全不同,所以它不会被覆盖。 – prayagupd