当我尝试用Java调用类时,发生了错误

时间:2012-04-02 16:58:35

标签: java

当我尝试在Java中调用名为“ShowHistory”的类时,出现错误:“ShowHistory类型必须实现继承的抽象方法ActionListener.actionPerformed(ActionEvent)”

这是我的代码:

    public class ShowHistory extends JFrame implements ActionListener {
   ...
    }

IDE建议我让这个类成为一个抽象类,但是当我将它转换为抽象类时,另一段代码出错了:

            ShowHistory frame = new ShowHistory();

它显示:“无法实例化ShowHistory类型”。

有什么想法可以解决这个问题吗?

5 个答案:

答案 0 :(得分:1)

当一个类implements是一个接口时,它需要为每个接口的方法提供一个实现。

此处,相关界面为ActionListener。它包含一个方法actionPerformed(ActionEvent)

您的班级ShowHistory需要为此方法提供实施:

public void actionPerformed(ActionEvent e) { ... }

错误消息告诉您当前该类不执行此操作。

答案 1 :(得分:1)

  

ShowHistory类型必须实现继承的抽象方法ActionListener.actionPerformed(ActionEvent)

这意味着您的类ShowHistory要实现ActionListener,它必须实现接口定义的所有方法。在这种情况下,这就是方法actionPerformed(ActionEvent)

public void actionPerformed(ActionEvent e) { ... }

当您将ShowHistory更改为abstract时,您已将其设置为无法实例化ShowHistory,并且它的子类(可以实例化,如果不是抽象的话)将负责定义ActionListener中的方法。

答案 2 :(得分:0)

您无法实例化抽象类。

然后,对于第一条错误消息,您只需要在类中实现方法actionPerformed,以便它覆盖ActionListener接口中的方法。当类实现接口时,它必须实现接口包含的每个方法。

正如您在documentation中看到的那样,ActionListener只有一种方法,actionPerformed,您需要实施。

答案 3 :(得分:0)

您无法实例化抽象类:这是abstract的定义!

然而,您可以实例化子类,可能是匿名类。例如:

ShowHistory frame = new ShowHistory() {
    // Add methods you might need to implement here
};

答案 4 :(得分:0)

当你实现任何接口或扩展任何类时,你必须实现接口或抽象类扩展中定义的所有方法。

如果你想要专门的类(在同一层次结构中较低)来提供实现,你可以使你的类抽象(如ide所建议的那样),但在这种情况下你将无法创建这个对象class,您将需要创建提供实现的新类的对象