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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Geek_001 中级黑马   /  2014-6-21 20:45  /  1323 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Geek_001 于 2014-6-22 07:38 编辑

图片的第二行是多态向下转型,格式是不是可以写为:
子类  子类类型名称 = (子类)父类类型名称?

捕获.PNG (13.79 KB, 下载次数: 35)

捕获.PNG

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

13 个回复

倒序浏览
向下转型是不安全的,开发中很少用到向下转型,除非你的对象是先向上转型后再想下转型。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
对、格式没有问题。子类  子类对象名称 = (子类)父类名称;
回复 使用道具 举报
yuZhe_toString 发表于 2014-6-21 21:12
向下转型是不安全的,开发中很少用到向下转型,除非你的对象是先向上转型后再想下转型。 ...

我能听懂,向下转型是为了可以调用子类特有的方法,但老师写的时候,顺手拈来,我一开始就是记不住怎么写的,
回复 使用道具 举报
≥﹏≤我还太年 发表于 2014-6-21 21:22
对、格式没有问题。子类  子类对象名称 = (子类)父类名称;

多谢,额这一次记牢了。
回复 使用道具 举报
多态用的地方好多。。
回复 使用道具 举报
Geek_001 发表于 2014-6-21 21:34
我能听懂,向下转型是为了可以调用子类特有的方法,但老师写的时候,顺手拈来,我一开始就是记不住怎么写 ...

用多,就会,就理解了,记不记倒没什么吧:)
回复 使用道具 举报
yuZhe_toString 发表于 2014-6-21 21:12
向下转型是不安全的,开发中很少用到向下转型,除非你的对象是先向上转型后再想下转型。 ...

为什么说不安全,举个栗子呀帅哥
回复 使用道具 举报
执笔梦 发表于 2014-6-21 22:18
用多,就会,就理解了,记不记倒没什么吧

同意你的说法.....................:)
回复 使用道具 举报
M路 中级黑马 2014-6-22 05:11:12
10#
对!就是别把其他子类转成这个这个子类,要不然就编译失败了
回复 使用道具 举报
lindegen 发表于 2014-6-21 22:27
为什么说不安全,举个栗子呀帅哥

比如说你自定义一个Person类里面有say()方法,然而Object是所有类的超类,Object obj = new Object();
虽然Object与Person有父子关系,你觉得obj可以向下转型成Person吗,obj能调用say方法吗?答案肯定是不能,这就是所谓的向下转型不安全。但是如果你 Object p = new Person(); 子类先向上转型为父类,这种情况 p 可以向下转型为Person.
回复 使用道具 举报
yuZhe_toString 发表于 2014-6-22 10:45
比如说你自定义一个Person类里面有say()方法,然而Object是所有类的超类,Object obj = new Object();
虽 ...

Object obj = new Object() 这样就没有涉及到多态了呀。原来多态就是子类对象向上转型的呀
回复 使用道具 举报
lindegen 发表于 2014-6-22 14:22
Object obj = new Object() 这样就没有涉及到多态了呀。原来多态就是子类对象向上转型的呀 ...

意思都一样。再比如A类与B类都继承C,C a = new A(); a同样也不能向下转型成B
回复 使用道具 举报
这就是一个强制类型转换啊,调用前要对数据类型有所预知就行,如果预知错误,那么在编译阶段可能ok,但在运行就抛异常了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马