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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1  class ZuFu {
}

class Fu extends ZuFu {
}

class Zi extends Fu {
        public void show(ZuFu zf) {
                System.out.println("祖父");
        }
        public void show(Zi z) {
                System.out.println("儿子");
        }
        public void show(Fu f) {
                System.out.println("父亲");
        }
}

public class Test2 {
        public static void main(String[] args) {
                Zi z = new Zi();
                z.show(null);
        }
}
2 解释:
        Java的重载解析过程是以两阶段运行的。第一阶段选取所有可获得并且可应用的方法或构造器。第二阶段在第一阶段选取的方法或构造器中选取最精确的一个。如果一个方法或构造器可以接受传递给另一个方法或构造器的任何参数,那么我们就说第一个方法比第二个方法缺乏精确性。
        具体到这道题就是:show(ZuFu zf)传递的参数可以接受另两个show方法的, show(Fu f)可以接受show(Zi z)的。而show(Zi z)可以接受的参数只能是Zi的对象。所以show(Zi z)最具有精确性。

1 个回复

倒序浏览
快来人分享啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马