为什么我们不能在一个类中重写

时间:2017-09-27 06:28:55

标签: java function override

我正在编写游戏代码,我正在使用KeyAdapter类进行键盘输入,但我遇到了问题。我正在扩展和使用KeyAdapter类的功能如下

class Kadapter extends KeyAdapter {
  @Override
  public void keyPressed(KeyEvent e) {
    //here i will write required code
  } 
}

当我在所有课程之外写作时,我在覆盖按下的功能键时没有任何错误 但现在假设我在任何其他类中定义它,如此处所示

class Arena extends JPanel {
  Player pl;

  Arena() {
    pl = new Player();
  }

  class Kadapter extends KeyAdapter {
    @Override
    public void KeyPressed(KeyEvent e) {
    }
  }
}

然后我在覆盖函数keyPressed时遇到错误。任何人都可以告诉我原因。我想在竞技场类中定义它,因为我需要在Kadapter类中使用相同的播放器类实例。好吧,我可以通过函数传递该实例。但我的问题是,为什么我们不能在竞技场类中覆盖相同的功能。我会找到关于玩家问题的任何替代解决方案,这不是问题,但请告诉我有关此覆盖问题。我很好奇。

1 个答案:

答案 0 :(得分:0)

您可以在嵌套类中定义和实现。应该没有任何问题。

到目前为止,我只能看到问题是方法名称是 KeyPressed

class Arena extends JPanel {
  Player pl;

  Arena() {
    pl = new Player();
  }

  class Kadapter extends KeyAdapter {
    @Override
    public void KeyPressed(KeyEvent e) {
    }
  }
}

应该是 keyPressed

k作为小写!