方法重载:为了使方法名相同但是形参不同的构造器同时存在,并在编译时可以由编译器根据形参的类型个数等自动确定调用哪个函数。
区分重载方法:参数类型、参数个数以及参数类型,但是不可以以返回值判断重载方法。
下面用一个例子来举例方法重载:
创建一个名为Animals的类,其具有重载的bark()方法,可以根据不同的基本数据类型进行重载,并根据调用版本打印出不同动物的叫声,狗叫(wangwangwang…)猫叫(miaomiaomiao…)羊叫(mianmianmian…)等信息。
public class Animals {
public static void main(String[] args) {
bark dog = new bark(1);
bark cat = new bark(1.0);
bark sheep = new bark("hello");
bark wolf = new bark(1,1.0);
bark bird = new bark(1.0,4);
}
}
class bark{
bark(){
System.out.println("null");
}
bark(int i){
System.out.println("wangwngwang...");
}
bark(double j){
System.out.println("miaomiaomiao...");
}
bark(String k){ //前三个方法根据数据类型判断重载方法
System.out.println("mianmianmian...");
}
bark(int i,double j){ //根据参数个数
System.out.println("ao~~~");
}
bark(double j,int //参数顺序
System.out.println("jijizhazha..");
}
}/*Output:
wangwngwang...
miaomiaomiao...
mianmianmian...
ao~~~
jijizhazha..
*///:~
从以上代码可以看出来,重载方法确实是可以根据以上方法判断的。
在定义重载方法时要注意:
- 重载方法尽可能是某一种类型的函数,避免将不同类型的定义成重载方法。
- 构成重载的方法,形参的类型、个数、顺序至少有一项不同。
- 编译时不以返回值和形参名称判断重载方法。