黑马程序员技术交流社区

标题: 新人提问,请大神帮记忆分析下 [打印本页]

作者: zhenxing133    时间: 2015-6-7 22:43
标题: 新人提问,请大神帮记忆分析下
帮忙分析下这个程序
class K {
            void fun1() {
                      System.out.println(fun2());
                }
                int fun2() {
                        return 123;
                }
        }
         public class N extends K {
                int fun2() {
                         return 456;
                 }
              public static void main(String args[]) {
                        N n = new N();
                        b.fun1();
                        K k = n;
                        k.fun1();
                }
        }



作者: heima591046495    时间: 2015-6-8 00:32
先进main方法,new了一个N的对象,调用fun1方法,然后就不会了,,最后应该输出456吧.
作者: hnyzhlq    时间: 2015-6-8 10:16
主函数在N类里,创建N类对象不会报错?
作者: kmlitheima    时间: 2015-6-8 10:29
这是一个神一样的题???b是哪里来的???????费解
作者: 八戒    时间: 2015-6-8 10:39
kmlitheima 发表于 2015-6-8 10:29
这是一个神一样的题???b是哪里来的???????费解

b明显是n,写错了估计
作者: 八戒    时间: 2015-6-8 10:40
典型的多态问题,题不错.....赞一个
作者: CLAY    时间: 2015-6-8 10:44
N中重写了父类方法 输出两次都为456
作者: meng12    时间: 2015-6-8 13:24
N中复写了K类中的fun2方法,所以调用fun2方法时,运行的是子类中的fun2方法
作者: 开弓没有回头箭    时间: 2015-6-8 14:23
n.fun1():调用本类中fun1方法,N类没有该方法,就会去父类找方法fun1,然后执行;然后fun1方法调用本类中调用fun2方法,本类中有该方法,则被直接调用。
K k=n;表示n和k是一样的,表示的同一个实体,只是名字改了,所以执行结果是一样的




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