方法過載
方法過載 (也稱為函式過載 )是類具有多個具有相同名稱的方法的能力,允許它們在引數的數量或型別上有所不同。
編譯器檢查方法過載的方法簽名。
方法簽名包含三件事 -
- 方法名稱
- 引數數量
- 引數型別
如果這三個對於類中的任何兩個方法都相同,那麼編譯器會丟擲重複的方法錯誤。
這種型別的多型稱為靜態或編譯時多型,因為在編譯期間編譯器根據引數列表決定要呼叫的適當方法。
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;
}