社区
Java SE
帖子详情
关于父类和子类转换的问题
Passerby12138
2021-04-19 05:50:38
我现在有A1,A2,A3,A4四个类继承了A,然后我接参数会接收到A1~A4中任意一个类,所以我用A类接收了(此时参数是用请求的方式接收),然后我要对数据做处理,可能需要用到A1里面的属性,如果我直接用A点,是点不出来,就只能转换类型,强转又会报类造型异常,我现在能怎么做?
...全文
149
4
打赏
收藏
关于父类和子类转换的问题
我现在有A1,A2,A3,A4四个类继承了A,然后我接参数会接收到A1~A4中任意一个类,所以我用A类接收了(此时参数是用请求的方式接收),然后我要对数据做处理,可能需要用到A1里面的属性,如果我直接用A点,是点不出来,就只能转换类型,强转又会报类造型异常,我现在能怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qybao
2021-04-20
打赏
举报
回复
强行转换前用instaneof判断一下是不是A1类型 比如 if (p instanceof A1) {//p是A类型参数 System.out.println(((A1)p).xxx); //转换为A1访问xxx }
Passerby12138
2021-04-20
打赏
举报
回复
按照你说的第二种方法,我接收的参数就得先是json字符串,然后再去转换类型,这样的话我在父类对象中是有一个属性是专门用来判断是哪个子类的,所以这样的话,我就没办法使用了,最终只能接收两个参数,一个json字符串,还有一个用来判断是哪个子类的字段,是这个意思吗?
baichangda234
2021-04-20
打赏
举报
回复
不确定类型的建议使用map接收、如果非要转换成对象、让请求端多传一个参数类型(例如1、2、3、4) ,目的是告诉你是属于哪一个子类的 然后你自己判断这个参数反转成对应子对象、不过这样子需要你手动将json字符串转换对象 只有这两个方法
baichangda234
2021-04-20
打赏
举报
回复
楼上说的instanceof是处理普通方法调用的类型识别 如果你是用请求方式接收、拿spring来说,如果你用对象接收了一个json字符串、那么spring 会使用json序列化工具将对象反转为对象A 此时这个对象就是A的实例、强转会失败、而且子类多出来的属性会丢失(这是取决于json序列化方式)
C#
子类
舍弃属性
转换
为
父类
UtilSubToBase.cs
利用C#反射将
子类
舍弃多余的属性
转换
为
父类
,用途比较少。
JAVA 多态操作----
父类
与
子类
转换
问题
实例分析
主要介绍了JAVA 多态操作----
父类
与
子类
转换
问题
,结合实例形式分析了JAVA 多态操作中
父类
与
子类
转换
问题
相关原理、操作技巧与注意事项,需要的朋友可以参考下
SV中
父类
与
子类
句柄
转换
,即
子类
的扩展类与
父类
句柄
转换
等
问题
如上图,表示了
父类
与
子类
的继承关系以及对象关系。 因此假设B继承A,那么
子类
B所能访问的成员变量同时包括自己的成员和
父类
的所有成员变量,也就是图中的大三角;而
父类
A仅能访问自己以及
子类
中属于自己的成员变量,不可访问
子类
的成员变量,即图中的小三角这是编译器规定,同时这个业与C/C++等高级语言保持一致。 那么就有一个
问题
,实际写代码过程中,避免不了类型的
转换
问题
,
父类
和
子类
句柄之间该如何
转换
? 根据图中的包含与被包含关系,我们可以清楚看到,
子类
包含了
父类
,因此:
父类
句柄=
子类
句柄,顺理成章,但反过来就不行.
子类
与
父类
的
转换
子类
转换
成
父类
时(向上转型)的规则: 将一个
父类
的引用指向一个
子类
对象,称为向上转型,自动进行类型
转换
。 此时通过
父类
引用变量调用的方法是
子类
覆盖或继承
父类
的方法,不是
父类
的方法。 此时通过
父类
引用变量无法调用
子类
特有的方法。
父类
到
子类
的
转换
(向下转型): 前面已经提到,当向上转型发生后,将无法调用
子类
特有的方法。但是当需要调用
子类
特有的方法时,可以通过将
父类
再
转换
为
子类
来实现。 将一个指向...
父类
与
子类
的强制
转换
父类
转
子类
假设Person类为
父类
,Student类为
子类
,
子类
方法为go(),此时
父类
实例化
子类
对象想调用
子类
方法是无法直接调用的,需要强制
转换
为
子类
方法如下:
子类
转
父类
>
子类
转换
父类
:可能会丢失自己本来的方法 假设Person类为
父类
,Student类为
子类
,
子类
方法为go(),此时
子类
类实例化对象想
转换
为
父类
,则
转换
后则无法调用go()方法 示例如下: ...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章