比如说,我有下面的代码:
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正在实现IAAA和IBBB。从IAAA中删除MyClass似乎没有任何影响。
我之所以问这个愚蠢的问题,是因为我经常在Android 开源项目中,甚至在标准的Java API (如ArrayList )中看到这种模式。
我想说的一个例子是SpannableStringBuilder.
Spanned接口扩展了CharSequence接口。
Spannable接口扩展了Spanned接口。
Editable接口扩展了CharSequence和Spannable接口。
SpannableStringBuilder类再次实现了CharSequence、Spannable、Editable接口。
我真的不明白。这样做有什么意义?为什么要麻烦呢?
发布于 2018-12-07 00:47:32
没有技术上的原因。如果Bar扩展Foo,并且希望找到实现Foo的所有类,那么只需查找Foo,而不是Foo和Bar。
发布于 2018-12-07 00:57:36
文档化,增强了MyClass必须实现IAAA的事实,而不是强迫(人工)代码读者查看IBBB才知道这一点。
https://stackoverflow.com/questions/53661715
复制相似问题