A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 惠晖 中级黑马   /  2012-11-20 17:38  /  1291 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 惠晖 于 2012-11-20 18:32 编辑

如果Object obj = new person();
要把他向下转型  Person p=(Person)obj  跟(Person)obj=Person p 一样么  =号俩边可以互换位置么?子类 子类对象 = (子类)父类对象  这样的格式对么
对这个转型还是不太了解 高手能不能用通俗易懂的话来总结总结啊

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
向上转型就是父类的引用指向子类的对象。
语法:
<父类型> <引用变量> = new <子类型>();
向下转型就是将父类的对象作为其子类的引用。
语法:
<子类型> <引用变量> = (<子类型>)<父类型引用变量>;
(Person)obj = Person p; 这种类型编译不会通过。

回复 使用道具 举报
本帖最后由 惠晖 于 2012-11-20 18:06 编辑
殷士剑 发表于 2012-11-20 17:58
向上转型就是父类的引用指向子类的对象。
语法:
  = new ();


意思是位置不能变是么?
回复 使用道具 举报
是下面这个意思吗:
Object obj1= new Object();
Person per = (Person)obj;

如果是这样的话,跟多态挂不上关系。
回复 使用道具 举报
打个不恰当的比喻,你化妆假冒你爸出现在公共场合就相当是 FU.f=new Zi();,
别人以为你就是你爸爸 f,那么你的辈分就向上转型了。
这时你女朋友来电话了,要找你,你说在某个地方见,那么你就卸掉妆就变化你自己了Zi z=(Zi) f;这个过程你的辈分就下降了。
(Person)obj=Person p   这就相当是把爸强制变成儿子,这样是不行的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马