黑马程序员技术交流社区

标题: *7、 分析运行结果,说明原理。 [打印本页]

作者: b277967086    时间: 2015-4-15 19:06
标题: *7、 分析运行结果,说明原理。
/*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。
*/
作者: 忆丶残梦顾惜    时间: 2015-4-15 19:12
恩  分析的很好
作者: zouxx    时间: 2015-4-15 19:25
学习了。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2