方法重载详解
2016-06-21 23:22
429 查看
什么是方法重载?
我这有一个需求,写一个计算2个数和的方法,这是一个很简单的方法如下:
public int add(int a,int b){
return a+b;
}
但是如果我的需要改变了,需要求3个数和的方法,这是你就要重新写一个方法,但是如果后面我的需求不断增加,这些方法名字你要不断的命名,最后会凌乱的,这里就可以用重载的特性来解决这类问题。
publicint show(int a , int b){
return a+b;
}
public double show(double a ,double b){
return a+b;
}
public String show(String a ,String b){
return a+b;
}
这段代码中定义了三个方法,但是3个方法的名字都一样的,却能通过编译,这就是方法的重载,个人理解是能帮某些特性功能的方法组合在一起,增加代码的可读。
重载需要满足什么条件?
1、方法名一致
2、参数列表不一样(如果上面这段代码参数类型不一样),
如果满足以上条件,你的方法就已经算是重载了,那么我们来练习下,看看下面这段代码
public void show(String a){
System.out.println("我是String");
}
public void show(Object a){
System.out.println("我是Object");
}
如果我调用方法传的是null了?show(null);会调用谁?报错?还是?这里会调用“我是Stirng”这是为什么?
分析:两种都是引用数据类型传递null理论上是都可以执行,但是jvm不知道执行谁,那么为什么却有执行了String了?因为String 继承了Object,jvm认为String比Object更加准确。
总结:
1、方法名必须相同
2、方法的参数必须不同(参数类型和个数)
3、如果参数个数不同,就不管参数类型
4、如果个数相同,就管参数类型
5、方法的返回类型和修饰符可以同
我这有一个需求,写一个计算2个数和的方法,这是一个很简单的方法如下:
public int add(int a,int b){
return a+b;
}
但是如果我的需要改变了,需要求3个数和的方法,这是你就要重新写一个方法,但是如果后面我的需求不断增加,这些方法名字你要不断的命名,最后会凌乱的,这里就可以用重载的特性来解决这类问题。
publicint show(int a , int b){
return a+b;
}
public double show(double a ,double b){
return a+b;
}
public String show(String a ,String b){
return a+b;
}
这段代码中定义了三个方法,但是3个方法的名字都一样的,却能通过编译,这就是方法的重载,个人理解是能帮某些特性功能的方法组合在一起,增加代码的可读。
重载需要满足什么条件?
1、方法名一致
2、参数列表不一样(如果上面这段代码参数类型不一样),
如果满足以上条件,你的方法就已经算是重载了,那么我们来练习下,看看下面这段代码
public void show(String a){
System.out.println("我是String");
}
public void show(Object a){
System.out.println("我是Object");
}
如果我调用方法传的是null了?show(null);会调用谁?报错?还是?这里会调用“我是Stirng”这是为什么?
分析:两种都是引用数据类型传递null理论上是都可以执行,但是jvm不知道执行谁,那么为什么却有执行了String了?因为String 继承了Object,jvm认为String比Object更加准确。
总结:
1、方法名必须相同
2、方法的参数必须不同(参数类型和个数)
3、如果参数个数不同,就不管参数类型
4、如果个数相同,就管参数类型
5、方法的返回类型和修饰符可以同
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树