为什么用例如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
类,还适用于所有具有空方法的类。
答案 0 :(得分:3)
这允许您扩展MouseAdapter
而不是实现MouseListener
并且必须自己编写所有这些(可能是空的)方法。使用适配器,您可以覆盖您感兴趣的方法。
答案 1 :(得分:2)
它只是允许您只实现您需要的方法。否则,您还应该添加您不需要的空方法,这将是无用的代码。顺便说一下,javadoc(第一句)就解释了这一点...... Javadoc是你最好的朋友。
答案 2 :(得分:0)
所有这些方法都在MouseListener
,因为您{strong}必须 implements
这些方法override
。如果您不想要某些操作,可以将它们保留为空方法,否则您需要在特定方法中实现逻辑。
突出显示点。
使用
class A implements B
时。您必须覆盖所有方法 A类中的B接口
答案 3 :(得分:0)
这种结构允许您选择要覆盖的方法。因此,通过扩展此抽象类而不是使用接口,如果您只想使用提供的某些方法,最终会产生较少噪声的代码。你甚至可以选择不覆盖任何方法(虽然这没有意义),那也没关系。
简而言之,您可以说:implements
强制您可以覆盖其方法; extends
允许覆盖其方法。