当前位置: 首页 > 面试题库 >

在Java中实现接口并覆盖方法?

刘承悦
2023-03-14
问题内容

为什么必须重写接口的所有方法?

例如,如果我有

public class Foo extend JFrame implements ActionListener, KeyListener {
      foo(){
      }
    @Override
    public void keyPressed(KeyEvent arg) {          
    }

    @Override
    public void keyReleased(KeyEvent arg) {
}

    @Override
    public void keyTyped(KeyEvent arg) {        
    }
}

我将有很多我什至不会使用的方法,有没有一种方法可以删除未使用的实现方法,例如,如果 我计划从接口中使用一种方法

我也不想使用抽象,因为这意味着我无法创建对象的实例(至少我的编译器这样说)


问题答案:

具体的类必须始终实现接口的所有方法。如果您还没有扩展JFrame,可以扩展KeyAdapter。它实现了空方法,KeyListener以避免将其写出来。您可以在类内部使用匿名类,Foo如下所示:

addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
        // handle typed key here
    }
});


 类似资料:
  • 在这个特定的示例中,我扩展了

  • 问题内容: 具有相同方法名称和签名的两个接口。但是由单个类实现,那么编译器将如何确定哪个方法用于哪个接口? 例如: 问题答案: 如果一个类型实现两个接口,并且每个接口定义一个具有相同签名的方法,则实际上只有一个方法,并且它们是不可区分的。例如,如果这两个方法的返回类型冲突,那么它将是编译错误。这是继承,方法重写,隐藏和声明的一般规则,并且不仅适用于两个继承的interface方法之间的可能冲突,还

  • 我想通过创建一个具体实现类的对象来执行接口中默认方法的定义体,该对象也覆盖了该方法。无论我是直接创建具体实现类的对象,还是通过动态绑定/多态,实现类中定义/重写的主体都只是得到执行。请看下面的代码 我想知道如何在控制台内部界面银行打印以下内容--loan()

  • 我目前正在练习为uni实现我自己的抽象数据结构,但是我在intelliJ方面遇到了问题。 我目前正在实现一个二进制搜索树,显然当我尝试实现它时(根据我正在看的讲座),它应该提示使用方法void add、void ade、boolean包含和int size。 然而,当自动填充需要实现的方法时,我得到了:boolean add、boolean remove、boolean containsAll、b

  • 在eclipse中,当为实现接口的类使用@Override注释时,我会遇到编译错误。 JDK合规级别设置为1.7。 我使用的是最新版本的jdk7。 错误:“{类名}类型的方法{方法名}必须覆盖超类方法”

  • 本文向大家介绍Java中覆盖finalize()方法实例代码,包括了Java中覆盖finalize()方法实例代码的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是Java中关于覆盖finalize()方法的一次尝试,具体实现如下。 测试代码 执行结果: finalize methode executed yes,i am still alive Exception in thread "