扩展已经由其父级扩展的接口AGAIN有什么好处?

时间:2018-12-07 00:40:11

标签: java android interface

说,我有以下代码:

interface IAAA {
    void aaa();
}

interface IBBB extends IAAA {
    void bbb();
}

class MyClass implements IAAA, IBBB {
    public void bbb() { }
    public void aaa() { }
}

IAAA中实现MyClass有什么好处? 如您所见,IAAA已经扩展了IBBB,并且MyClass正在实现IAAAIBBB。从IAAA中删除MyClass似乎没有任何影响。

我问这个愚蠢的问题的原因是, 我经常在 Android开源项目中看到这种模式,有时甚至在诸如Java之类的标准API ArrayList中也看到这种模式。

我要谈论的一个例子是 SpannableStringBuilder

Spanned界面扩展了CharSequence界面。

Spannable界面扩展了Spanned界面。

Editable接口扩展了CharSequenceSpannable接口。

SpannableStringBuilder类再次实现CharSequenceSpannableEditable接口。

我真的不明白。这样做的目的是什么?为什么要打扰?

2 个答案:

答案 0 :(得分:5)

没有技术原因。这可能会使维护变得容易一些-如果Bar扩展了Foo,并且您想查找实现Foo的所有类,则只需要查找Foo即可,而不必查找Foo和Bar。

答案 1 :(得分:2)

文档,加强了$("#numbers tbody").prepend("<tr><td></td><td>" + number + "</td><td>" + formattedTime + "</td></tr>");必须实现MyClass的事实,而没有强迫(人类)代码阅读者看着IAAA知道这一点。