方法重载
什么是方法重载?
方法重载是在同一个类中,定义了多个同名方法,但每个方法具有不同参数类型,参数个数,参数的顺序不同,这些同名的方法构成了方法的重载。
例如:
public static void print(){
System.out.println("Hello World!");
}public static void print(String str){
System.out.println(str);
}
上述两个方法由于方法的参数数量不同构成方法重载。
方法重载只和方法名和参数有关,与方法的关键字和返回值无关。
例如一个方法的方法名和参数相同,只改变方法的返回值类型或者关键字,那么对于系统而言这两个方法不构成重载。
public static void print(){
System.out.println("Hello World!");
}public static void print(){
System.out.println("Hello World!");
}
错误就是对方法进行重定义,这就说明改变public关键字,是否去掉static关键字和改变返回值类型都不能构成方法重载。对于方法重载而言,它可以根据方法中参数的不同精确的匹配到我们想要调用的方法。
知道了方法的定义后,剩下就是对方法重载的使用了。
例如:计算圆形和长方法形的面积。
分析:由于圆的面积公式中只需要有一个参数,而长方形的面积公式中需要两个参数,但又因为方法需要计算的都是面积,所以使用方法重载更好。
public class Test4 {
public static void main(String[] args) {
jisuan(3);
jisuan(3,4);
}
public static void jisuan(double a) {
System.out.println("圆的面积:"+(a*3.14));
}
public static void jisuan(double a,double b) {
System.out.println("长方形的面积:"+(a*b));
}
}
如果只是两个方法大可把另一个方法的名字更改一下,毕竟例题只有两个方法也不是很难记。
但如果我们去看java的源码可以发现,Java源码使用了大量的方法重载。
例如Java源码中的println()方法:
为什么我们在调用println()方法时无论往里面传入什么值或者不传值都不会报错呢?
这时候我们就可一看看Java的源码是怎么定义这个println()方法的了。(以下为源码的方法的部分截图)
通过对源码的了解,我们直到了println()方法使用了方法重载,包括无参,八大基本数据类型的参数,引用数据类型,甚至包含了Object类型的参数,基本把所有的情况都包含在内了。这时候如果没有使用方法重载的话,那么光是记住这些名字都不是一件容易的事。
所以这个就必须说方法重载的好处了:
不用为了对不同的参数类型或参数个数,而写多个方法,系统可以根据方法中的参数不同进行自动匹配;
这样我们在调用的时候,就不需要记那么多的方法名称,对编写代码的效率也会提高。