A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*7、 分析运行结果,说明原理。(没有分析结果不得分)
        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();
                }
        }
   
答:
        456
        456

分析:首先看主方法里创建了一个B类对象b,然后通过对象b调用方法fun1(),因为B类中没有fun1(),
所以到父类,即A类中去找,我们又发现fun1()中调用了fun2(),而B类又对成员方法fun2()进行了重写,所以输出结果为456;
A a = b的作用是对对象b进行向上转型,但是对象a和对象b所指向的地址值还都是一样的,所以它们仍然表示同一个对象,所以输出还是456。
*/

2 个回复

倒序浏览
恩  分析的很好
回复 使用道具 举报
学习了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马