方法過載
方法過載 (也稱為函式過載 )是類具有多個具有相同名稱的方法的能力,允許它們在引數的數量或型別上有所不同。
編譯器檢查方法過載的方法簽名。
方法簽名包含三件事 -
- 方法名稱
- 引數數量
- 引數型別
如果這三個對於類中的任何兩個方法都相同,那麼編譯器會丟擲重複的方法錯誤。
這種型別的多型稱為靜態或編譯時多型,因為在編譯期間編譯器根據引數列表決定要呼叫的適當方法。
class Polymorph {
public int add(int a, int b){
return a + b;
}
public int add(int a, int b, int c){
return a + b + c;
}
public float add(float a, float b){
return a + b;
}
public static void main(String... args){
Polymorph poly = new Polymorph();
int a = 1, b = 2, c = 3;
float d = 1.5, e = 2.5;
System.out.println(poly.add(a, b));
System.out.println(poly.add(a, b, c));
System.out.println(poly.add(d, e));
}
}
這將導致:
2
6
4.000000
過載方法可以是靜態的或非靜態的。這也不會影響方法過載。
public class Polymorph {
private static void methodOverloaded()
{
//No argument, private static method
}
private int methodOverloaded(int i)
{
//One argument private non-static method
return i;
}
static int methodOverloaded(double d)
{
//static Method
return 0;
}
public void methodOverloaded(int i, double d)
{
//Public non-static Method
}
}
此外,如果你更改方法的返回型別,我們無法將其作為方法過載。
public class Polymorph {
void methodOverloaded(){
//No argument and No return type
}
int methodOverloaded(){
//No argument and int return type
return 0;
}