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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

帮忙分析下这个程序
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();
                }
        }


8 个回复

倒序浏览
先进main方法,new了一个N的对象,调用fun1方法,然后就不会了,,最后应该输出456吧.
回复 使用道具 举报
主函数在N类里,创建N类对象不会报错?
回复 使用道具 举报
这是一个神一样的题???b是哪里来的???????费解
回复 使用道具 举报
kmlitheima 发表于 2015-6-8 10:29
这是一个神一样的题???b是哪里来的???????费解

b明显是n,写错了估计
回复 使用道具 举报
典型的多态问题,题不错.....赞一个
回复 使用道具 举报
CLAY 中级黑马 2015-6-8 10:44:39
7#
N中重写了父类方法 输出两次都为456
回复 使用道具 举报
N中复写了K类中的fun2方法,所以调用fun2方法时,运行的是子类中的fun2方法
回复 使用道具 举报
n.fun1():调用本类中fun1方法,N类没有该方法,就会去父类找方法fun1,然后执行;然后fun1方法调用本类中调用fun2方法,本类中有该方法,则被直接调用。
K k=n;表示n和k是一样的,表示的同一个实体,只是名字改了,所以执行结果是一样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马