你看啊!B类继承了A类中的fun1(),因此B b = new B()后,用b调用fun1(),调用的是B继承过来的fun1(),然后又调用了fun2(),由于B类重写了A类中的fun2(),因此调用的是B类中的fun2(),运行结果为999.但是,A a = new B()后,即用父类引用a去调用fun1(),子类B类继承了fun1()但是没有重写fun1(),那么用父类引用a去调用fun1()时,我认为调用的是A类中的fun1().但是别人认为调用的仍是B类继承来的fun1().我就这一点不懂了。老师说过,父类引用指向子类对象时,如果子类重写了父类中的方法后,用父类引用调用这个方法,调用的是子类重写过来的这个方法。所以我想问你:父类引用指向子类对象时,如果子类没有重写父类中的方法,仅仅是子类继承了父类中的这个方法,那么用父类引用去调用这个方法,调用的是父类中的这个方法,还是子类从父类继承过来的这个方法?为什么? |