/**
* 第七题:分析运行结果,说明原理
* @author Administrator
*
*/
public class Test7 {
/*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();
}
}*/
/*
* 分析:class B继承了class A,就拥有了A中的方法,fun2()方法被重写,当B b = new B()创建子类对象,子类对象b调用fun1()也就是父类的方法fun1(),
* 父类中的方法又调用了子类的fun2()方法,所以打印456。
* 父类A a=b 这是多态,父类引用指向了子类对象 ,a调用fun1()方法,调用的就是父类中的fun1(),父类引用指向子类对象时,如果父类的引用调用的方法没有被子类重写,
* 就会调用父类中的方法。如果子类中重写了父类的方法,就会调用子类重写的方法 ,所以打印456*/
}
|