這是一個令我困惑的例子。何時在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