为什么向下转型的前提是强转对象必须由向上造型方式创建?
如果不是通过向上造型的方式创建的对象,在编译时强转不会编译报错。但是运行时会抛出类型转换异常:ClassCastException。
在类型转换异常(ClassCastException)中也是调用super()来判断是否具有父子类关系。
运行时是如何进行引用中的类型的判断的?求解
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
为什么向下转型的前提是强转对象必须由向上造型方式创建?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
於黾 2021-09-07 02:56关注比如有一个父类,就叫class a吧
然后继承它的一个class就叫b吧,class b:a
你可以将一个b类型的对象放入a类型的对象中
a A=new b()
但它的类型其实还是b,不是a,只是放入了一个更大的类型中,好比一个小箱子可以放入一个大箱子,因为大箱子能够容纳小箱子
你也可以把小箱子倒出来
b B=(b)A
但是你不能反过来操作,强行把一个大箱子装入一个小箱子(父类给子类),或者一个长方形的箱子装入一个正方形的箱子(没有继承关系)本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2021-11-03 09:20回答 2 已采纳 简单理解就是:equals方法入参是Object类型,Object o 被你赋值为User对象,但是对于编译器来说,它只认变量声明的类型,。可乐不管放到杯子里还是放到碗里,它还是可乐,不会变成白开水。
- 2017-03-01 05:13回答 5 已采纳 多态是面向对象很重要的一个概念。向上翻转有什么用,举个简单的例子。 有个基类animal,有bark方法System.out.print('animal'),有几个子类cat,dog,bird,都实
- 2016-04-19 09:35回答 3 已采纳 实现的功能没有区别。但是维护起来就不如第一个。 第一个是父类引用指向之类对象。可以降低程序的耦合性,即调用者不必关心调用的是哪个对象,只需要针对接口编程就可以了,被调用者对于调用者是完全透明的。让你
- 2024-06-01 06:43m0_54463709的博客 4、在设计系统时,可能一开始并不确定具体使用哪个子类,或者为了减少代码对具体实现的依赖,会倾向于使用父类或接口引用,这样可以在不修改...向上转型之后可以当成父类对象使用,若需要调用子类特有的方法,则需要。
- 2022-10-30 02:50回答 3 已采纳 创建的是Integer类型的,向下转型怎么能转成string类型,这明显类型不匹配,进行上转型之后,向下转型必须转换成创建对象对应的类型,其他的都不行,这个只是编译能通过,因为Object是所有类型的
- 2021-09-16 01:12回答 3 已采纳 因为是继承的,C的属性B完全继承,B的属性A也会完全继承,C和B的属性A也一定有,所以A是可以转型为C或者B的,但是A的属性C和B不一定有,所有C和B不能转型为A连续继承的都可以向上转型
- 2020-03-12 13:50回答 2 已采纳 这里用到了一种面向抽象编程的思路,Java 的类的具体类型是运行时计算的,编译时根本没办法确定实际的类型,所以为了正确通过编译器,需要转换。 实际上,可以要什么类型就定义什么类型的,但是编程时会定义
- 2021-10-04 09:35编程界小明哥的博客 简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞! 引言 很多...
- 2022-01-10 02:45回答 1 已采纳 B b=(B)a怎么是向下转型呢,明显是向上转型啊别说B是接口,没有继承关系,只是实现就算B是父类,子类转父类根本不需要强制转换啊,B b=a就行了
- 2015-06-30 17:09回答 3 已采纳 记着 new谁创建的就是谁,就是了
- 2017-12-10 19:12回答 6 已采纳 强行转换成派生类类型 Parent c = new Child(); ((Child)c).变量
- 2023-01-23 06:19烽起黎明的博客 见一见Java多态中的向上转型和向下转型,做区分更好理解多态的特性
- 2022-07-16 14:20SSS4362的博客 本文解析了java中向下转型和向上转型
- 2024-08-12 02:00柏箱的博客 比如这里的animal运行类型为cat,在调用eat方法时,尽管父类animal和子类cat中均有eat这个方法,还是会调用子类的eat方法。...比如这样就是向上转型,animal是dog的父类,这里让父类的引用指向了子类的对象。
- 2022-04-07 06:07折衷J的博客 向上转型: 本质:父类引用指向了子类的对象 语法:父类类型 引用名 = new 子类类型(); 特点:编译类型看左边,运行类型看右边 可以调用父类中的所有成员(需访问权限) 不能调用子类特有的成员; 最终运行效果...
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司