首先來看下方法重載的定義:對于同一個(gè)類诡挂,如果這個(gè)類里面有兩個(gè)或兩個(gè)及以上重名的方法碎浇,但是方法的參數(shù)個(gè)數(shù),類型或者順序璃俗,至少有一個(gè)不一樣奴璃,這個(gè)時(shí)候就構(gòu)成了方法的重載。
從定義來理解城豁,有一下幾個(gè)注意點(diǎn):
- 一.方法名一定要相同苟穆。
- 二.方法的參數(shù)表必須不同,包括參數(shù)的類型或個(gè)數(shù)唱星,以此區(qū)分不同的方法體雳旅。
1.如果參數(shù)個(gè)數(shù)不同,就不管它的參數(shù)類型了间聊!
2.如果參數(shù)個(gè)數(shù)相同攒盈,那么參數(shù)的類型必須不同。 - 三.方法的返回類型哎榴、修飾符可以相同型豁,也可不同。
下面看個(gè)小例子尚蝌,有助于理解方法的重載:
For example:
public class OverLoadExample {
/**
* add()方法迎变,沒有任何參數(shù)
* @return
*/
public int add()
{
return 1;
}
/**
* add()方法,含有一個(gè)整型參數(shù)
* @return
*/
public int add(int i)
{
return i;
}
/**
* add()方法飘言,含有一個(gè)字符串參數(shù)
* @param str
* @return
*/
public String add(String str)
{
return str;
}
/**
* add()方法衣形,含有兩個(gè)整型參數(shù)
* @param a
* @param b
* @return
*/
public int add(int a,int b)
{
return a+b;
}
/**
* add()方法,含有兩個(gè)字符串參數(shù)
* @param str1
* @param str2
* @return
*/
public String add(String str1,String str2)
{
return str1+" love "+str2;
}
public static void main (String [] args)
{
OverLoadExample exam= new OverLoadExample();
System.out.println(exam.add());
System.out.println(exam.add(1));
System.out.println(exam.add("Grady"));
System.out.println(exam.add(1,2));
System.out.println(exam.add("gyl", "zd"));
}
}
執(zhí)行代碼結(jié)果
image.png
雖然方法名都是add,但參數(shù)的數(shù)量不同热凹,或者參數(shù)的類型不同泵喘,分別執(zhí)行了同一方法名的不同方法體,這就是重載的好處般妙。