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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐青松 中级黑马   /  2014-2-18 22:51  /  1721 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徐青松 于 2014-2-20 14:14 编辑

Object类是所有java类的父类,Object是String的父类,为什么Object object =new Object();String s=(String)object;这样强制转换成是错的,为什么object不能向下转型?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
Object 是父类 String是子类 我的理解是并不是所有的父类都可以转换成子类的
就像是 人(Person)是学生(Student)的父类但不能说人就是学生
Person a =new Student();
Person b =new Person();
a可以向下转型
但b不可以向下转型
Object可以用toString方法转换成字符串

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
楼主,你两个地方错了,第一句 Object类应该是所有java类的父类或基类,第二个:强制转换只用在多态的情况下,即调用子类的特有方法才向下转型,所以Object object =new Object();String s=(String)object;这肯定是错的,改成:Object object =new String();String s=(String)object;这就对了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
疲劳的小马 发表于 2014-2-19 01:07
楼主,你两个地方错了,第一句 Object类应该是所有java类的父类或基类,第二个:强制转换只用在多态的情况 ...

呵呵,第一句打错了,谢谢你的指出。
回复 使用道具 举报
疲劳的小马 发表于 2014-2-19 01:07
楼主,你两个地方错了,第一句 Object类应该是所有java类的父类或基类,第二个:强制转换只用在多态的情况 ...

“强制转换只用在多态的情况下”, 不太赞同你这句话,在double a=2.5;int b =(int)a;这里不是多态,但是也用到了强制转换。
回复 使用道具 举报
徐青松 发表于 2014-2-20 13:56
“强制转换只用在多态的情况下”, 不太赞同你这句话,在double a=2.5;int b =(int)a;这里不是多态,但是 ...

额。。我的那句话意思是结合那个语境来的。。。单独拿出来肯定错。。好吧。。偶错了-_-!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马