方法重載

我們今天有趣的新話題是方法重載。小心——方法重載不能與方法覆蓋混淆。

與覆蓋不同,重載是一個非常簡單的操作。它實際上不是對方法的操作,儘管有時它被稱為參數多態性這個可怕的術語。

這裡的問題是類中的所有方法都必須具有唯一的名稱。嗯,這並不完全準確。嗯,更準確地說,這根本不准確。方法名稱不必是唯一的。必須唯一是方法名稱和方法參數類型的聯合。這個聯合被稱為方法簽名

例子:

代碼 描述
public void print();
public void print2();
這是允許的。這兩種方法具有唯一的名稱。
public void print();
public void print(int n);
還有這個。這兩種方法具有唯一的名稱(簽名)。
public void print(int n, int n2);
public void print(int n);
方法還是很獨特的
public int print(int a);
public void print(int n);
但這是不允許的。這些方法不是唯一的。即使他們返回不同的類型。
public int print(int a, long b);
public long print(long b, int a);
你可以做到這一點。方法參數唯一

簽名包括方法名稱和參數類型。它不包括方法的返回類型和參數名稱。一個類不能有兩個具有相同簽名的方法——編譯器不知道調用哪一個。

參數名稱無關緊要,因為它們在編譯期間會丟失。一旦一個方法被編譯,只有它的名字和參數類型是已知的。返回類型沒有丟失,但方法的結果不必分配給任何東西,所以它也不包含在簽名中。

根據OOP原則,多態性將不同的實現隱藏在單個接口後面。System.out.println()例如,當我們調用方法時,會根據傳遞的參數調用不同的方法。這是行動中的多態性。

這就是為什麼在同一個類中包含具有相同名稱的不同方法被認為是一種弱形式的多態性。