Java 子类方法不重写父类中相同签名的方法
为什么我的子类方法不重写其父类中具有相同签名的方法 总结: 我有一个类Java 子类方法不重写父类中相同签名的方法,java,inheritance,Java,Inheritance,为什么我的子类方法不重写其父类中具有相同签名的方法 总结: 我有一个类PlayerPaddle,它扩展了一个抽象类pable,它扩展了抽象类Actor(这里的上下文是一个乒乓球游戏)Pable和PlayerPaddle都有一个具有相同签名的方法: public void moveDown() 其目的是让PlayerPaddlemoveDown方法覆盖pable方法。这里的问题是当我调用this.moveDown()内部PlayerPaddle时,只调用moveDown方法paile 详情如下:
PlayerPaddle
,它扩展了一个抽象类pable
,它扩展了抽象类Actor(这里的上下文是一个乒乓球游戏)Pable
和PlayerPaddle
都有一个具有相同签名的方法:
public void moveDown()
其目的是让PlayerPaddle
moveDown
方法覆盖pable
方法。这里的问题是当我调用this.moveDown()
内部PlayerPaddle
时,只调用moveDown
方法paile
详情如下:
在padle
中的moveDown()
上设置的断点将跳闸,而在PlayerPaddle
中的moveDown()
上设置的断点将永不跳闸。我还在PlayerPaddle
moveDown
方法上尝试了@Override
,但它仍然调用拨片moveDown
方法
背景:
目标是让PlayerPaddle
对象以不同于其他pable
对象的速度上下移动。因此,moveUp
方法也会出现同样的问题
代码如下:
我很乐意提供澄清。请看一个简单的案例,它是有效的:
public class Test{
public static void main(String args[])
{
new PlayerPaddle().receiveEvent();
}
}
abstract class Actor {
public void releasedEvent(KeyEvent e) {
}
}
abstract class Paddle extends Actor {
public void moveDown() { // this method is called
System.out.println("paddle");
}
}
class PlayerPaddle extends Paddle {
@Override
public void moveDown() { // this method never gets called
System.out.println("playerpaddle");
}
public void receiveEvent() {
this.moveDown(); // Want to call moveDown() inside PlayerPaddle
}
}
它称为PlayerPaddle one。请看一个简单的例子,它可以工作:
public class Test{
public static void main(String args[])
{
new PlayerPaddle().receiveEvent();
}
}
abstract class Actor {
public void releasedEvent(KeyEvent e) {
}
}
abstract class Paddle extends Actor {
public void moveDown() { // this method is called
System.out.println("paddle");
}
}
class PlayerPaddle extends Paddle {
@Override
public void moveDown() { // this method never gets called
System.out.println("playerpaddle");
}
public void receiveEvent() {
this.moveDown(); // Want to call moveDown() inside PlayerPaddle
}
}
它称为PlayerPaddle one。它看起来应该可以工作。如何确定调用了哪个方法?请尝试记录消息(即使是System.out.println()
也可以)。这可能比使用调试器跟踪您的位置更可靠。无论如何,对我来说效果更好…为了更快地获得更好的帮助,请发布一个。显示您调用方法的代码。如果这不起作用,Java就不会是多态的。它是…看起来应该有用。如何确定调用了哪个方法?请尝试记录消息(即使是System.out.println()
也可以)。这可能比使用调试器跟踪您的位置更可靠。无论如何,对我来说效果更好…为了更快地获得更好的帮助,请发布一个。显示您调用方法的代码。如果这不起作用,Java就不会是多态的。这是…谢谢你的帮助,这是正确的。我把我的班名弄错了。谢谢你的帮助,这是对的。我把我的班名弄错了。