В Java можно, используя наследование, добавлять новые объявления методов в интерфейсы, а так же комбинировать несколько интерфейсов в один новый интерфейс. В обоих случаях может быть получен новый интерфейс , как видно из примера ниже:
// Расширение интерфейса с наследованием. interface Monster { void menace();}interface DangerousMonster extends Monster { void destroy();}interface Lethal { void kill();}class DragonZilla implements DangerousMonster { public void menace() {} public void destroy() {}}interface Vampire extends DangerousMonster, Lethal { void drinkBlood();}class HorrorShow { static void u(Monster b) { b.menace(); } static void v(DangerousMonster d) { d.menace(); d.destroy(); } public static void main(String[] args) { DragonZilla if2 = new DragonZilla(); u(if2); v(if2); }} ///:~ DangerousMonster - простое расширение до Monster, создающее новый интерфейс. Который, в свою очередь реализуется в DragonZilla.
Синтаксис, использованный в Vampire, работает только с наследованием интерфейсов. Обычно, Вы можете использовать extends только с одиночным классом, но в силу того, что интерфейсы могут быть созданы из множества других интерфейсов, extends может ссылаться на множество базовых интерфейсов при создании нового интерфейса. Как Вы видите, имена интерфейсов отделены просто запятыми.