- package com.itheima;
- /**
- * @param args
- * 分析运行结果,说明原理。
- */
- class A{
- void fun1(){
- System.out.println(fun2());
- }
- int fun2(){
- return 123;
- }
- }
- public class Test5 extends A{
- int fun2(){
- return 456;
- }
- public static void main(String args[]){
- Test5 b = new Test5();
- b.fun1();//System.out.println(fun2()
- A a = b;
- a.fun1();
- }
- }
- /*
- * 分析:b.fun1();当子类Test5出现和父类A一模一样的函数时,当子类调用子类函数fun2()会覆盖父类函数fun2()并
- * 运行子类函数fun2()的内容,这就是覆盖的特性,所以运行结果是子类的返回值456。
- * A a = b;父类的引用指向了自己的子类对象,类型提升,这是多态的体现
- * a.fun1();父类的引用也可以接收自己的子类对象,成员函数在多态调用时,编译看左边,运行看右边,运行结
- * 果还是子类的方法,所以运行结果是子类的返回值456。
- * */
复制代码
|
|