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就不会是多态的。这是…谢谢你的帮助,这是正确的。我把我的班名弄错了。谢谢你的帮助,这是对的。我把我的班名弄错了。