不对。
如果super()时传的是new Son()的this指针。那么如果把父类里的callFather()删除掉以后,还是能打印出call son!的。
但是实际上是打印不出来的。编译器出错,说父类里没有callFather()方法。
Father father = new Son();就是强制把Son转换成Father.它就是Father类型。当调用callFather的时候,JVM会通过Class对象来确定Father的实际类型。来确定是调用哪个callFather。
LZ可以看看王森的java深度历险,里面对jdk的运行机制做了比较详细的介绍。
如果super()时传的是new Son()的this指针。那么如果把父类里的callFather()删除掉以后,还是能打印出call son!的。
但是实际上是打印不出来的。编译器出错,说父类里没有callFather()方法。
Father father = new Son();就是强制把Son转换成Father.它就是Father类型。当调用callFather的时候,JVM会通过Class对象来确定Father的实际类型。来确定是调用哪个callFather。
LZ可以看看王森的java深度历险,里面对jdk的运行机制做了比较详细的介绍。