本帖最后由 杨卫腾 于 2013-10-19 20:40 编辑
- class Test3
- {
- public static void main(String[] args)
- {
- Test3 t = new Test3();
- t.method(null);
- }
- public void method(Object obj)
- {
- System.out.println("Object");
- }
- public void method(String s)
- {
- System.out.println("String");
- }
- }
- // 以上编译通过,执行结果是String
- /*
- class Test4
- {
- public static void main(String[] args)
- {
- Test4 t = new Test4();
- t.method(null);
- }
- // 其基类都是Object
-
- public void method(Integer in)
- {
- System.out.println("Object");
- }
- public void method(String s)
- {
- System.out.println("String");
- }
- }
- 编译失败:
- Test4.java:6: 错误: 对method的引用不明确, Test4中的方法 method(Integer)和Test4中
- 的方法 method(String)都匹配t.method(null);
- 如果改成一下方式:
- class Test5
- {
- public static void main(String[] args)
- {
- Test5 t = new Test5();
- t.method(null);
- }
- public void method(Fu fu)
- {
- System.out.println("Fu");
- }
- public void method(Zi zi)
- {
- System.out.println("Zi");
- }
- }
- class Fu{}
- class Zi extends Fu
- {
- Zi(){System.out.println("Zi show run")}
- }
- 编译通过,结果和Test3的如出一辙是 Zi.
- */
复制代码 请大家帮忙看看这是为什么? |