运行ParentChildTest代码得到的结果是:
Parent.printValue(),myValue=100
Child.printValue(),myValue=200
Child.printValue(),myValue=200
Child.printValue(),myValue=200
Child.printValue(),myValue=201
结果分析:
先分别创建了一个父类和子类的对象并调用其中的方法,得到了1、2行的结果,然后进行了向上转型,并调用了子类中的方法,得到了第3行的结果,但是之后将变量值进行加一,第4行的结果却没有变化;对父类对象进行强制类型转换后再进行加一操作,第5行的输出结果却有了变化。(?)
把向上转型的语句进行注释后,发现编译时没有错误,但运行后的结果中显示了错误,通过查看书籍发现是父类对象不能直接强转为子类对象,通过将强转的语句进行注释再运行验证了这一说法。
总结:
进行向上转型后,对象执行的是子类中的字段与方法,并且父类对象不能直接强制类型转换为子类。