Скажите, у меня есть код ниже:
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
OpenИсходный проект , а иногда даже в стандартном Java
API
, таком как ArrayList
.
Один пример, о котором я хочу поговорить, это SpannableStringBuilder
.
Spanned
интерфейс расширяет CharSequence
интерфейс.
Spannable
интерфейс расширяет Spanned
интерфейс.
Editable
интерфейс расширяет как CharSequence
, так и Spannable
интерфейс.
SpannableStringBuilder
класс реализует интерфейс CharSequence
, Spannable
, Editable
СНОВА.
Я действительно не понимаю.Какой смысл делать так?Зачем?