我正在编写一个简单的代码,通过覆盖子类中超类的值来学习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
答案 0 :(得分:5)
你的积分课没有xy
或ry
字段/方法,所以你确实没有覆盖任何东西。如果您希望将这些构造函数参数转换为方法,请使用class point(val xy: Int, val ry: Int)
。