请帮小弟我分析一下这段代码,多谢

请帮我分析一下这段代码,谢谢!class A{}public class Exam{public void run(Object o){System.out.println

请帮我分析一下这段代码,谢谢!
class A{

}

public class Exam{

public void run(Object o){
System.out.println("Object");
}
public void run(A a){
System.out.println("A");
}
public static void main(String[] args){
new Exam().run(null);
}
}

请问运行结果为什么是:A

[解决办法]
因为A继承了Object,从更小的开始执行!
如果有B继承了A,并且重载了相应参数的run方法,则会输出B!
[解决办法]
论坛以前有这个问题:
因为A继承自Object编译器从范围小的开始匹配。如果你改成:
class A{ 

} 

class B extends A{

}

public class T{ 

public void run(Object o){ 
System.out.println("Object"); 
} 
public void run(A a){ 
System.out.println("A"); 
} 
public void run(B b){ 
System.out.println("B"); 
} 
public static void main(String[] args){ 
new T().run(null); 
} 
} 

结果将是B