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方法。

图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章