方法過載

方法過載 (也稱為函式過載 )是類具有多個具有相同名稱的方法的能力,允許它們在引數的數量或型別上有所不同。

編譯器檢查方法過載的方法簽名

方法簽名包含三件事 -

  1. 方法名稱
  2. 引數數量
  3. 引數型別

如果這三個對於類中的任何兩個方法都相同,那麼編譯器會丟擲重複的方法錯誤

這種型別的多型稱為靜態編譯時多型,因為在編譯期間編譯器根據引數列表決定要呼叫的適當方法。

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;
}