假设我有这个界面和类:
interface IListener
{
void f();
void g();
void h();
}
class Adapter implements IListener
{
void f() {}
void g() {}
void h() {}
}
如果什么都不做,那么实现thoose接口方法的意义何在?
答案 0 :(得分:10)
如果您不需要所有方法,目的是使界面的实现更容易。您可以扩展适配器并仅覆盖您想要的方法。这些类仅为方便起见而存在。
例如,在Swing中,实现MouseListener
时,您可能不希望处理所有鼠标事件。在这种情况下,您可以扩展MouseAdapter
并仅处理您感兴趣的事件。
请注意,Adapter
类通常也会实现该接口。
答案 1 :(得分:2)
在你发布的示例中它是无用的,但是如果你使用适配器来实现IListener(class Adapter implements IListener
),它就像实例化new Adapter()
之类的适配器对象一样有用了。
否则,在接口中定义的所有方法都具有正确的实现之前,Adapter仍然是一个不能实例化的抽象类,也不能是其子类。一个空的实现也是一个正确的实现。