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