运行结果应该是456,456
因为B类继承A类,B类会把A类的方法继承过来,只是在B类中并没有显示出来,执行b.fun1()方法时,调用了fun()2方法,这时候B类重写了该方法,所以会去执行子类的fun2()方法。
第二个输出的也是456,因为A a= b;程序在编译期是看做A类型的,但是在运行期是看做B类型的,在调用a.fun()1方法时,其实是调用子类的fun1()方法,这时调用了fun2()方法,子类重写了该方法,所以输出为456....
以上只是个人分析,本人菜鸟刚学java.....其他大神们是怎么分析的呢? |