关于JAVA重载的问题~!

来源:百度知道 编辑:UC知道 时间:2024/06/07 19:32:41
下面分别举一个例子来说明方法重载:
public class TestOverLoad{
public static void main(String[] args) {
Test test = new Test();
test.print(null);
}
}
class Test{
public void print(String some){
System.out.println("String version print");
}
public void print(Object some){
System.out.println("Object version print");
}
}
该程序输出的结果是String version print。
请问下为什么是这个结果啊?
重载不是根据传入参数来打印结果吗?难道他们2个传入的参数不一样?
请赐教

因为String类是Object的子类,所以重载的时候按照子类的算。
给你写了一段实例程序如下:

public class Test {
public static void print(SuperClass sc){
System.out.println("super class");
}

public static void print(Class1 c1){
System.out.println("class1");
}

public static void print(Class2 c2){
System.out.println("class2");
}

public static void main(String[] args){
SuperClass sc = new SuperClass();
Class1 c1 = new Class1();
SuperClass c2 = new Class2();

print(sc);
print(c1);
print(c2);
}
}

class SuperClass{
SuperClass(){

}
}

class Class1 extends SuperClass{
Class1(){
super();
}
}

class Class2 extends SuperClass{
Class2(){
super();
}
}

输出:
super class
class1
super class

不知明白否?

因为null可以当做Strin