黑马程序员技术交流社区

标题: 向上向下转型问题 [打印本页]

作者: 惠晖    时间: 2012-11-20 17:38
标题: 向上向下转型问题
本帖最后由 惠晖 于 2012-11-20 18:32 编辑

如果Object obj = new person();
要把他向下转型  Person p=(Person)obj  跟(Person)obj=Person p 一样么  =号俩边可以互换位置么?子类 子类对象 = (子类)父类对象  这样的格式对么
对这个转型还是不太了解 高手能不能用通俗易懂的话来总结总结啊
作者: 殷士剑    时间: 2012-11-20 17:58
向上转型就是父类的引用指向子类的对象。
语法:
<父类型> <引用变量> = new <子类型>();
向下转型就是将父类的对象作为其子类的引用。
语法:
<子类型> <引用变量> = (<子类型>)<父类型引用变量>;
(Person)obj = Person p; 这种类型编译不会通过。


作者: 惠晖    时间: 2012-11-20 18:03
本帖最后由 惠晖 于 2012-11-20 18:06 编辑
殷士剑 发表于 2012-11-20 17:58
向上转型就是父类的引用指向子类的对象。
语法:
  = new ();


意思是位置不能变是么?
作者: 殷士剑    时间: 2012-11-20 18:14
是下面这个意思吗:
Object obj1= new Object();
Person per = (Person)obj;

如果是这样的话,跟多态挂不上关系。
作者: 李涛兴    时间: 2012-11-20 20:20
打个不恰当的比喻,你化妆假冒你爸出现在公共场合就相当是 FU.f=new Zi();,
别人以为你就是你爸爸 f,那么你的辈分就向上转型了。
这时你女朋友来电话了,要找你,你说在某个地方见,那么你就卸掉妆就变化你自己了Zi z=(Zi) f;这个过程你的辈分就下降了。
(Person)obj=Person p   这就相当是把爸强制变成儿子,这样是不行的。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2