黑马程序员技术交流社区
标题:
向上向下转型问题
[打印本页]
作者:
惠晖
时间:
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