因为h是Hero类型的,多态性不就是这么实现的么:)这里编译一样会动态编译的,跟c++里面你一定要用virtual关键字不同,不知道你是不是想问这个。
解决方案 »
- java 编码
- random类问题。。。
- 关于删除字符串的问题
- 大家都写的请教高手,可上面貌似没啥高手,郁闷啊。。。。。。。。。
- java 连接sql server 2000 数据库问题,请高手指点,不胜感激
- 帮我看看下面结果一样,区别?哪个好??有分送
- 请教Applet连接sqlserver2000数据库的问题
- Swing的应用范围(??有点迷惑??)
- URI scheme is not "file",为什么啊
- 1、我在一个文本框中输入时,当敲击enter时,如何判断按下的是enter键?请高手指点!
- this 关键字
- 紧急求救:在树控件里面,能不能让不同的节点显示不同的位图?包括根结点和叶子节点
如果:ActionCharacter a = new ActionCharacter();
w(a); // Treat it as an ActionCharacter显示的是:print class ActionCharacter!!!
public class Adventure {
static void t(CanFight x) { x.fight(); }
static void u(CanSwim x) { x.swim(); }
static void v(CanFly x) { x.fly(); }
static void w(ActionCharacter x) { x.fight(); }
public static void main(String[] args) {
Hero h = new Hero();
t(h); // Treat it as a CanFight
System.out.println("**********************************");
u(h); // Treat it as a CanSwim
v(h); // Treat it as a CanFly
w((ActionCharacter )h); // Treat it as an ActionCharacter
}
}
注意我强制转换了类型w((ActionCharacter )h),输出依然没有变化!
我觉得static void w(ActionCharacter x) { x.fight(); }只会接受ActionCharacter类型或者是他的基础类,而Hero不是他的基础类!
不知理解的对不对?
to xieha(罗马假日) 你的意思我理解,我不明白的是为什么这里的转换没有起到预期的作用!谢谢!