1、向下转型需在满足向上转型前提下进行
譬如:如下图所示代码中,父类Person及两个子类Chinese,French,子类中既有重写父类的方法,又有各自独立的方法。
测试类中:先经过向上转型设置one指向Chinese,后由French强转one,此时虽然编译不会报错,但会产生运行时异常。
因此:请注意,向下转型时,不允许转为非原始类型,即“哪来回哪去”
2、类型转换时的括号应用
接上面父类Person及两个子类Chinese,French代码,此时测试类中,先经过向上转型设置one指向Chinese,后希望实现强转回Chinese进而调用独有的Taijiquan方法。由下图可见,编译时即产生异常。
原因为:此时由于运算符优先级,会优先执行one.Taijiquan(); 该方法运行后才会进行Chinese类型转换。但经过上一步的向上转型,one无法调用Chinese特有的Taijiquan方法。
修订方法:
此时会在执行完Chinese类型转换后,才会进行Taijiquan方法。