ParentChildTest代码测试

运行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行的输出结果却有了变化。(?)

把向上转型的语句进行注释后,发现编译时没有错误,但运行后的结果中显示了错误,通过查看书籍发现是父类对象不能直接强转为子类对象,通过将强转的语句进行注释再运行验证了这一说法。

 

总结:

进行向上转型后,对象执行的是子类中的字段与方法,并且父类对象不能直接强制类型转换为子类。

原文地址:https://www.cnblogs.com/lxywsx/p/13884225.html