“你好,阿米戈!我要給你講講方法重載。”

“你也可以讓它們超載?!多棒的一天!”

“你可以用它們做很多事情,但我們現在不會討論那個。”

“就這麼說定咯。”

“重載是一個非常簡單的操作。實際上,它甚至不是對方法的操作,儘管它有時被稱為一個可怕的名字:參數多態性。”

您必須記住的是,類中的每個方法都必須有一個唯一的名稱。

“是的,我知道。”

“嗯,這不完全正確。我的意思是,這根本不正確。一個方法不必有唯一的名稱。必須唯一的是方法名稱及其參數類型的組合。這種組合也是稱為方法簽名。”

代碼 評論
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);
但這是允許的。方法參數是唯一的。

“我已經在什麼地方見過了。”

“是的。當您鍵入“ System.out.println ”時,IntelliJ IDEA 建議使用不同參數的打印方法的幾十個版本。編譯器簡單地識別並根據您傳遞的參數類型調用所需的方法。”

“這並不難。但這不是多態性。”

“或者更準確地說,這不是方法重寫。”

順便說一句,我想指出參數名稱是無關緊要的。它們在編譯過程中丟失。一旦一個方法被遵守,只有它的名字和參數類型是已知的。