什么"必须实现继承的抽象方法java.awt.event.ActionListener.actionPerformed(java.awt.event.ActionEvent)"意思?

时间:2017-01-30 14:26:27

标签: java drjava

我在代码中遇到了障碍。这是手中的课程。

public class StartRoom extends Room implements ActionListener {

   JButton buttonTwo;

   public StartRoom() {
      start();
      buttonOne = new JButton("Go to door.");
      buttonTwo = new JButton("Look at skeleton.");
      label = new JLabel("You walk into the dungeon, the room is covered with vines. There is a skeleton sitting near the northern door. What do you do?");
      panelOne.add(label);
      panelOne.add(buttonOne);
      buttonOne.addActionListener(this); 
      buttonTwo.addActionListener(this);
   }

   class MyActionListener implements ActionListener {
      @Override
      public void actionPerformed(java.awt.event.ActionEvent ae) {

      } 
   }

   public static void main( String[]args ) {
      new StartRoom();
   }
}

它说类型StartRoom必须在第五行实现继承的抽象方法java.awt.event.ActionListener.actionPerformed(java.awt.event.ActionEvent),但我无法弄清楚它的问题!

2 个答案:

答案 0 :(得分:2)

StartRoom implements ActionListener表示StartRoom应该承担ActionListener的合同。方法actionPerformed( ActionEvent)必须由您自己实施。

public class StartRoom extends Room implements ActionListener {
   ...

   @Override
   public void actionPerformed(java.awt.event.ActionEvent ae) {
      // your code here....
   } 
}

例如,如果要委托其他类MyActionListener,则必须更改buttonTwo.addActionListener(this);中的使用情况,将this替换为MyActionListener的实例。

MyActionListener toto = new MyActionListener();
buttonTwo.addActionListener( toto );

在后一种情况下,您应该从implements ActionListener类声明中删除StartRoom

答案 1 :(得分:0)

当您实现某些东西时,您正在使用该类作为接口,这意味着您必须使用并重新定义您正在实现的类中的每个方法。但是,如果您希望按原样使用该类的方法,那么您可以扩展它并使该类成为您类的超类。请记住,您只能扩展一个类,但可以将大量类作为接口实现。