java温习*(13):关于向下转型易出现错误总结

1、向下转型需在满足向上转型前提下进行

譬如:如下图所示代码中,父类Person及两个子类Chinese,French,子类中既有重写父类的方法,又有各自独立的方法。

图片描述

测试类中:先经过向上转型设置one指向Chinese,后由French强转one,此时虽然编译不会报错,但会产生运行时异常。

图片描述

图片描述

因此:请注意,向下转型时,不允许转为非原始类型,即“哪来回哪去”

2、类型转换时的括号应用

接上面父类Person及两个子类Chinese,French代码,此时测试类中,先经过向上转型设置one指向Chinese,后希望实现强转回Chinese进而调用独有的Taijiquan方法。由下图可见,编译时即产生异常。

图片描述

原因为:此时由于运算符优先级,会优先执行one.Taijiquan(); 该方法运行后才会进行Chinese类型转换。但经过上一步的向上转型,one无法调用Chinese特有的Taijiquan方法。

图片描述

修订方法:

图片描述

此时会在执行完Chinese类型转换后,才会进行Taijiquan方法。

图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值