关于Java中方法重载的试验

对于方法重载来讲,如果在调用方法的时候,传入参数null对象,会出现怎样的结果呢?
下面就举个Sample:

1. 重载方法类:
public class MethodReloader {

public void printObject(String str){
System.out.println("String print out");
}

public void printObject(Object obj){
System.out.println("Object Print out");
}

}

2. 测试类:

public class TestString {

/**
* @param args
*/
public static void main(String[] args)throws Exception {
try{
MethodReloader methodReloader = new MethodReloader();
methodReloader.printObject(null);
}catch(Exception ex){
ex.printStackTrace();

}
}

1) 执行结果是什么呢?
2) 如果在类MethodReloader中添加一行:

public void printObject(Double obj){
System.out.println("Double print out");
}

结果是什么呢?
3) 如果在类MethodReloader中添加一行:
public void printObject(double obj){
System.out.println("double print out");
}

结果是什么呢?

1) Console输出结果是:String print out.
2) Compile error.
3) Console输出结果是:String print out.

结论:
关于方法重载,JVM总是在内存中去寻找参数类型和个数相等的方法去执行,但是当寻找多个方法时,先匹配所有类型的最小子类(如:Object是所有类的父类,即先匹配其它类),就调用该方法。如果发现有两个同等级类型的方法时候,在编译期间就出现Exception.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值