Возможность расширения интерфейсов

Ключевое слово extends позволяет одному интерфейсу наследовать другой. Синтаксис определения такого наследования аналогичен синтаксису наследования классов. Когда класс реализует интерфейс, который наследует другой интерфейс, он должен предоставлять реализации всех методов, определенных внутри цепочки наследования интерфейса. Ниже показан пример.

// Один интерфейс может расширять другой.
interface А {
void methl () ;
void meth2 () ;
}
// Теперь В включает в себя methl () и meth2() и добавляет meth3().
interface В extends А {
void meth3();
}
// Этот класс должен реализовать все методы классов А и В
class MyClass implements В {
public void methl() {
System.out.println("Реализация methl().");
}
public void meth2() {
System.out.println("Реализация meth2().");
}
public void meth3() {
System.out.println("Реализация meth3().");
}
}
class IFExtend {
public static void main(String arg[]) {
MyClass ob = new MyClass();
ob.methl () ;
ob.meth2();
ob.meth3 () ;
}
}

В порядке эксперимента можете попытаться удалить реализацию метода methl () из класса MyClass. Это приведет к ошибке времени компиляции. Как уже было сказано, любой класс, который реализует интерфейс, должен реализовать все определенные этим интерфейсом методы, в том числе любые методы, унаследованные от других интерфейсов.

Хотя в приведенных в этой книге примерах пакеты или интерфейсы используются не очень часто, оба эти средства являются важными составляющими среды программирования Java. Буквально все реальные программы, написанные на Java, будут храниться в пакетах. Вполне вероятно, что многие из них будут также реализовать интерфейсы. Поэтому важно освоиться с их применением.