为什么我的子类方法没有覆盖其父类中相同签名的方法?
概括:
我有一个PlayerPaddle
扩展抽象类的类Paddle
,它扩展了抽象类 Actor(这里的上下文是乒乓球游戏)。Paddle
并且PlayerPaddle
两者都有一个具有相同签名的方法:
public void moveDown()
目的是让PlayerPaddle
moveDown
方法覆盖Paddle
. 这里的问题是当我调用this.moveDown()
inside时PlayerPaddle
,只调用了moveDown
方法Paddle
。
细节:
moveDown()
在in上设置的断点Paddle
被触发,而在moveDown()
in上设置的断点PlayerPaddle
从不触发。我也尝试@Override
了该PlayerPaddle
moveDown
方法,但它仍然调用该Paddle
moveDown
方法。
上下文:
目标是让对象以与其他对象PlayerPaddle
不同的速度向上/向下移动。Paddle
因此,该moveUp
方法也会出现同样的问题。
下面的代码:
abstract public class Actor {
public void releasedEvent(KeyEvent e) {
}
}
abstract public class Paddle extends Actor {
public void moveDown() { // this method is called
body.setVel(0, Game.dX / 10.);
}
}
public class PlayerPaddle extends Paddle {
@Override
public void moveDown() { // this method never gets called
body.setVel(0, Game.dX );
}
public void receiveEvent(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
this.moveUp();
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
this.moveDown(); // Want to call moveDown() inside PlayerPaddle
}
}
}
我很高兴提供澄清。