class A {
void fun1() {
System.out.println(fun2());
}
int fun2() {
return 123;
}
}
public class B extends A {
//子类重写父类的方法fun2();多态的一种体现
int fun2() {
return 456;
}
public static void main(String args[]) {
//创建B类的对象
B b = new B();
//调用B类继承父类A的方法
//在运行是fun1()调用fun2(),
//因为B类中有fun2()方法,
//所以调用B类中的fun2();
//运行时多态,所以结果为:456
b.fun1();
//父类引用指向子类实例,多态的一种体现
A a = b;
//调用方法时,会根据实际的类型即B类的类型调用B类中的方法
//运行时多态。因为B类中没有fun1(),所以调用继承自父类中的fun1()
//在运行是fun1()调用fun2(),因为B类中有fun2()方法,
//所以调用B类中的fun2();
//运行时多态,所以结果为:456
a.fun1();
}
}
解答:
运行结果是:
456
456
分析过程详见上述代码中的注释。
不谢!!:P:lol
|