利用繼承技術,可方便地為一個接口添加新的方法聲明,也可以將幾個接口合並成一個新接口。在這兩種情況下,最終得到的都是一個新接口,如下例所示:
//: HorrorShow.java // Extending an interface with inheritance 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可能引用多個基礎接口。正如大家看到的那樣,接口的名字只是簡單地使用逗號分隔。