Философия Java

         

Расширение интерфейса с наследованием


Вы можете с легкостью добавлять объявления методов, в интерфейсы, используя наследование, а так же Вы можете комбинировать несколько интерфейсов в один новый интерфес с наследованием. В обоих случаях Вы получите новый интерфейс , как видно из примера ниже:

//: c08:HorrorShow.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 может ссылаться на множество базовых интерфейсов при создании нового интерфейса. Как Вы видите, имена интерфейсов отделены просто запятыми.



Содержание раздела