第198页java中的多重继承//: co8:Afdeventure.java
//Multiple interfaces.interface CanFight{
void fight();
}interface CanSwim{
void Swim();
} interface CanFly{
void Fly();
}class ActionCharacter{
public void fight(){} //这是什么?后边怎么会有{}??
}class Hero extends ActionCharacter
implements CanFight,CanSwim,CanFly { public void swim(){}
public void fly(){}
}Public class Adventure{
public static void t(CanFight x){x.fight();}//像这样的定义有什么意义和作用?x又是什
//么,怎么没有定义?x和h有什么关系?
public static void u(CanSwim x){x.swim();}
public static void v(CanFly x){x.fly()};
public static void w(ActionCharacter x){x.fight()};
Hero h = new Hero();
t(h); //Treat it as a CanFight
u(h); //Treat it as a CanSwim
v(h); //Treat it as a CanFly
w(h); //Treat it as an ActionCaracter
}
}///-谢谢大家点拨了 :) !!
//Multiple interfaces.interface CanFight{
void fight();
}interface CanSwim{
void Swim();
} interface CanFly{
void Fly();
}class ActionCharacter{
public void fight(){} //这是什么?后边怎么会有{}??
}class Hero extends ActionCharacter
implements CanFight,CanSwim,CanFly { public void swim(){}
public void fly(){}
}Public class Adventure{
public static void t(CanFight x){x.fight();}//像这样的定义有什么意义和作用?x又是什
//么,怎么没有定义?x和h有什么关系?
public static void u(CanSwim x){x.swim();}
public static void v(CanFly x){x.fly()};
public static void w(ActionCharacter x){x.fight()};
Hero h = new Hero();
t(h); //Treat it as a CanFight
u(h); //Treat it as a CanSwim
v(h); //Treat it as a CanFly
w(h); //Treat it as an ActionCaracter
}
}///-谢谢大家点拨了 :) !!
解决方案 »
- 请哪位帮我看看这段小程序?
- 一道编程题,特急,今天就要。
- 一个方法中多次执行sql语句的问题
- 持久层是什么?为什么要用到持久层。
- 请问有没有java tutorial 中文版 下载?用google都没找到。(八百里加急~)
- 简单的socket问题
- Object 类型操作:
- 如何用java或是其他工具做成图象文件(.gif 或是 .jpg)
- 怎么跟我要activation key??
- 什么情况用protect, privat,public?
- jsf中h:selectOneMenu无法调整大小,属性中没有size而页面布局中又要求设置他的长和宽,请教如何?
- String args[]?String[] args?
public static void t(CanFight x){x.fight();} //CanFight是接口,怎么可以来实例
//化一个对象呢?里边提到了“向上转型”这个概念。
public void fight(){} //这是什么?后边怎么会有{}??
}
这是fight()方法,只不过方法中没有任何语句,因此只写了{}public static void t(CanFight x){x.fight();}//像这样的定义有什么意义和作用?x又是什
//么,怎么没有定义?x和h有什么关系?
向上转型,书上有
与
public void fight();两者完全不一样。前者就是一个普通的方法,只是方法体中没有语句。而后者(注意结尾处的分号不能省略)只能出现在接口中,用来“声明”一个方法,但并不给出具体实现,即抽象方法。你可以在前面加上abstract关键字,但不加它也是抽象的。如果要在abstract class使用抽象方法,则必须加上abstract关键字。一个非抽象类中则不能有抽象方法。
public static void u(CanSwim x){x.swim();}
public static void v(CanFly x){x.fly()};