首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-03-19 
请帮我分析一下这段代码,谢谢!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

热点排行
Bad Request.