Java SE 是什么,包括哪些内容(十九)?
本文内容参考自Java8标准
再次感谢Java编程思想对本文的启发!
接口与接口之间也是可以相互继承的,就是一个接口可以extends另一个接口。
通过继承,可以很容易地在接口中添加新的方法声明,还可以通过继承在新接口中组合数个接口,这两种情况都可以获得新的接口:
代码示例:
// 接口间的继承
//接口Monster
interface Monster{
//方法menace()
void menace();
}
//接口DangerousMonster继承了接口Monster
interface DangerousMonster extends Monster{
//除了自动获得方法menace()之外,还新增了方法destroy()
void destroy();
}
//接口Lethal
interface Lethal{
//方法kill()
void kill();
}
//类DragonZilla实现了接口DangerousMonster
class DragonZilla implements DangerousMonster{
//分别给实现了接口中的方法menace()和方法destroy()
public void menace() {};
public void destroy() {};
}
//接口Vampire继承了接口DangerousMonster和接口Lethal
interface Vampire extends DangerousMonster,Lethal{
//除了自动获得方法menace(),方法destroy(),方法kill()外,还新增了方法
//drinkBlood()
void drinkBlood();
}
//类VeryBadVampire实现了接口Vampire
class VeryBadVampire implements Vampire{
//实现了接口Vampire中的所有方法
public void menace() {};
public void destroy() {};
public void kill() {};
public void drinkBlood() {};
}
//类HorrorShow
public class HorrorShow{
//方法u(Monster b),带一个Monster类型的形式参数b
static void u(Monster b){
//调用方法menace()
b.menace();
}
//方法v(DangerousMonster d),带一个DangerousMonster类型的形式参数d
static void v(DangerousMonster d){
//调用方法menace()
d.menace();
//调用方法destroy()
d.destroy();
}
//方法w(Lethal l),带一个Lethal类型的形式参数l
static void w(Lethal l){
//调用方法kill()
l.kill();
}
//程序执行入口main方法
public static void main(String[] args){
//创建类DragonZilla的对象实例,赋值给了父类DangerousMonster
//的引用barney
DangerousMonster barney = new DragonZilla();
//调用方法u(Monster b),将类DragonZilla向上转型为了类Monster
u(barney);
//调用方法v(DangerousMonster d),将类DragonZilla
//向上转型为了类DangerousMonster
v(barney);
//创建类VeryBadVampire的对象实例,赋值给父类Vampire的引用vlad
Vampire vlad = new VeryBadVampire();
//调用方法u(Monster b),将类VeryBadVampire向上转型为了类Monster
u(vlad);
//调用方法v(DangerousMonster d),将类VeryBadVampire
//向上转型为了类DangerousMonster
v(vlad);
//调用方法w(Lethal l),将类VeryBadVampire
//向上转型为了类Lethal
w(vlad);
}
}
接口DangrousMonster是接口Monster的直接扩展,它产生了一个新接口。类DragonZilla中实现了这个接口。
在接口Vampire中使用的语法仅适用于接口继承,一般情况下,只可以将关键字extends用于单一类,但是可以实现多个父类接口,只需要在声明中将接口用","一一分开即可。
PS:时间有限,有关Java SE的内容会持续更新!今天就先写这么多,如果有疑问或者有兴趣,可以加QQ:2649160693,并注明CSDN,我会就博文中有疑义的问题做出解答。同时希望博文中不正确的地方各位加以指正。