class A {
void fun1() {
System.out.println(fun2());
}
int fun2() {
return 123;
}
}
public class B extends A {
int fun2() {
return 456;
}
public static void main(String args[]) {
B b = new B();
b.fun1();
A a = b;
a.fun1();
}
}作者: 哪颗最亮的星星 时间: 2013-8-6 09:57
首先:类B继承了类A并覆盖了类A的fun2方法,哪么不管是建立类A的对象还是类B的对象,运行时,都是走的子类方法,
B b = new B();
b.fun1();//走的子类中的fun2方法,打印456
A a = b;//这里用到的是多态,
a.fun1();//因为子类覆盖了父类的方法,所以走的还是子类的fun2,结果当然还是456
总之一句话:当子类覆盖父类方法时,哪么运行时,走的都是子类方法作者: 逆袭的风 时间: 2013-8-6 10:29 本帖最后由 逆袭的风 于 2013-8-6 10:33 编辑