在课堂上使用Empty方法

时间:2014-08-22 11:40:26

标签: java swing mouselistener

为什么用例如MouseAdapter类的空方法创建一个类有多种方法被定义为空。相反,我们可以将它用作接口而不是类

MouseAdapter的代码如下:

public abstract class MouseAdapter implements MouseListener{
    public MouseAdapter(){}
    public void mouseClicked(MouseEvent event){}
    public void mousePressed(MouseEvent event){}
    public void mouseReleased(MouseEvent event){}
    public void mouseEntered(MouseEvent event){}
    public void mouseExited(MouseEvent event){}
}

由于上述任何方法都没有定义,这些空方法的用途是什么,为什么我们不将它用作接口。我的问题不仅适用于MouseAdapter类,还适用于所有具有空方法的类。

4 个答案:

答案 0 :(得分:3)

这允许您扩展MouseAdapter而不是实现MouseListener并且必须自己编写所有这些(可能是空的)方法。使用适配器,您可以覆盖您感兴趣的方法。

答案 1 :(得分:2)

它只是允许您只实现您需要的方法。否则,您还应该添加您不需要的空方法,这将是无用的代码。顺便说一下,javadoc(第一句)就解释了这一点...... Javadoc是你最好的朋友。

答案 2 :(得分:0)

所有这些方法都在MouseListener,因为您{strong}必须 implements这些方法override。如果您不想要某些操作,可以将它们保留为空方法,否则您需要在特定方法中实现逻辑。

突出显示点

  

使用class A implements B时。您必须覆盖所有方法   A类中的B接口

答案 3 :(得分:0)

这种结构允许您选择要覆盖的方法。因此,通过扩展此抽象类而不是使用接口,如果您只想使用提供的某些方法,最终会产生较少噪声的代码。你甚至可以选择不覆盖任何方法(虽然这没有意义),那也没关系。

简而言之,您可以说:implements 强制您可以覆盖其方法; extends 允许覆盖其方法。