实质
方法的重载是在同一个类中,方法与方法之间的关系。重载其实就是在类中重用方法名。java平台靠方法签名来区分不同的方法;方法签名相同的方法无法同时存在于同一个类中(即使它们的访问修饰符、返回值类型不同,因为方法签名与这些无关)。
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数不同的方法。
方法重载是让类以统一的方式处理不同类型数据的一种手段。Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法。
方法签名
方法签名由两部分组成:
- 方法名
- 方法的参数类型(包括数据类型、个数、顺序等)
重载的含义
类中的两个或多个方法,若它们有相同的方法名,但有不同的方法签名,那么这几个方法就是重载的。
方法重载的具体规范
- 方法名一定要相同。
- 方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
- 如果参数个数不同,就不管它的参数类型了!
- 如果参数个数相同,那么参数的类型必须不同。
3. 方法的返回类型、修饰符可以相同,也可不同。
示例代码
public class MethodOverloading {
void receive(int i) {
System.out.println("Received one int data");
System.out.println("i="+i);
}
void receive(float f) {
System.out.println("Received one float data");
System.out.println("f="+f);
}
void receive(String s) {
System.out.println("Received a String");
System.out.println("s="+s);
}
public static void main(String [] args){
MethodOverloading m = new MethodOverloading();
m.receive(3456);
m.receive(34.56f);
m.receive("方法重载");
}
}
应用时应该注意,方法重载只跟方法名(相同)和参数表(不同)有关。与访问修饰符、返回值、形参名等无关。