Java方法的重载
方法的重载,即在同一个类中,存在方法名相同,但是参数不同的方法。
参数不同的定义:
(1)个数不同;
(2)类型不同;
(3)顺序不同。此处要注意:必须存在不同类型的参数才可以,如果两个都为int的话,就算改变变量的位置,也不叫顺序不同,因为都为int类型。(int a,int b)和(int b,int a)不叫参数顺序不同。(String s,int a)和(int a,String s)才叫参数顺序不同。
只要满足上述任一条件或者组合条件,都可称为参数不同。
上述定义中,没有提到修饰符和返回值,所以方法的重载与返回值和修饰符无关。
下面我们来举几个例子:
package com.dh.method;
public class overload {
public static void main(String[] args) {
//使用相同的方法名add()调用
//根据参数来区分调用的是哪一个具体的方法
System.out.println(add(1,2));
add(1,2,"hello");
System.out.println(add(1.0,2.0));
System.out.println(add("hello", 1, 2));
}
public static int add(int a,int b){
return a+b;
}
//参数类型不同
public static double add(double a,double b){
return a+b;
}
//参数个数不同
//使用private修饰符
private static void add(int a,int b,String s){
System.out.println(a+b+s);
}
//参数顺序不同
//使用public修饰符
public static String add(String s,int a,int b){
//返回值与上述方法不同
return s+a+b;
}
}
实现原理:
方法名称相同时,编译器会根据参数个数、类型逐个去匹配方法,以选择对应的方法,如果匹配不到相应的算法,就会报错。
这样就可以方便方法的调用了,像上述例子,不同参数类型的加法运算都可以使用add()这个方法来调用,在调用方法的时候,IDEA也会提示给出所有重载的方法需要什么类型的参数,多少个参数,就方便许多了,而不用一种数据类型的加法运算就要记忆一个方法的名称。
简单吧~只要记住参数不同的要求就可以了!