Java中的抽象类错误

时间:2013-07-23 02:47:08

标签: abstract

我是Java新手,我遇到了编译错误,我无法理解。

Chapter5Debug is not abstract and does not override abstract method itemStateChanged(java.awt.event.ItemEvent) in java.awt.event.ItemListener

public class Chapter5Debug extends Frame implements ItemListener
       ^

任何人都可以帮助我了解我需要做些什么来解决这个问题吗?

感谢帮助!

希拉

4 个答案:

答案 0 :(得分:1)

你必须记住,如果ItemListener是抽象的,那么你需要实现ItemListener中的所有方法。如果要保留当前结构,可以在Chapter5Debug类中添加一个空的itemStateChanged方法。

答案 1 :(得分:1)

详细说明@kevolution的答案:

public class Chapter5Debug extends Frame implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
        // Write your method here
    }
}

抽象类就像普通类一样,但可以包含一些“存根” - 或抽象 - 方法。这些是需要由扩展抽象类的类实现的方法。在这种情况下,itemStateChanged()被标记为抽象,这意味着您需要声明它。

当您编写需要调用者以某种方式提供内容的代码时,抽象类很有用。在这种情况下,Java无法知道在项目状态发生变化时该怎么做,但它可以执行大量的其他内容。其他的东西是Frame类中的常规方法,它们调用itemStateChanged()方法 - 然后将调用您自己的处理代码。

答案 2 :(得分:0)

你需要在Chapter5Debug

中实现itemStateChanged(ItemEvent)

示例代码

public class Chapter5Debug extends Frame implements ItemListener {

//初始化发生的地方

checkbox.addItemListener(本);

public void itemStateChanged(ItemEvent e){

if (e.getStateChange() == ItemEvent.SELECTED) {
    label.setVisible(true);
    ...
} else {
    label.setVisible(false);
}

}

}

答案 3 :(得分:0)

ItemListener是一个接口,因此实现ItemListener意味着你要么必须在Chapter5Debug中提供实现

你可以将Chapter5Debug抽象化,然后在继承Chapter5Debug的类中提供实现。

Crux就是如果你实现了一个接口,你就无法通过不提供实现而逃脱。要么你必须在那里提供它,要么把它带到儿童班。