Java 允許方法重載,即同一類別的兩個或多個方法可以共享相同的名稱。
當方法參數宣告不同時,就會發生方法重載。
方法重載是 Java 中實現多態性的一種方式。
要重載方法,您需要宣告它的不同版本。
編譯器會根據參數自動選擇正確的方法。
一個重要的限制:重載方法的參數類型和/或數量必須不同,而不僅僅是返回類型不同。
重載方法的回傳類型也可能不同,但參數對於選擇正確的方法至關重要。
當呼叫重載方法時,將執行參數與參數相符的版本。
ovlDemo() 方法使用不同的簽章重載四次:
第一個版本:不含參數。
第二個版本:帶有整數參數。
第三個版本:有兩個整數參數。
第四個版本:有兩個雙參數。
ovlDemo() 的前兩個版本回傳 void,而後兩個版本回傳一個值。
方法重載不受回傳類型影響。
嘗試使用僅透過傳回類型區分簽署的 ovlDemo() 的兩個版本將導致錯誤。
傳回型別的差異不足以實作 Java 中的方法重載。
此範例顯示,具有相同簽章的兩個方法,即使傳回型別不同,也會導致錯誤。
Java 執行自動型別轉換,這些轉換也適用於重載方法的參數。
此範例顯示了 f() 方法的兩個版本:一個帶有 int 參數,另一個帶有 double 參數。
byte和short型別的值會自動轉換為int,呼叫f(int)方法。
透過呼叫 f(double) 方法將浮點值轉換為雙精確度值。
當參數和參數之間沒有直接匹配時,就會發生自動轉換。
加入帶有位元組參數的 f() 版本可以改變值的處理方式。
在目前版本中,當使用 byte 參數呼叫 f() 時,會直接呼叫 f(byte),不會自動轉換為 int。
方法重載允許 Java 中的多態性,促進「一個接口,多個方法」範式的實作。
在不支援重載的語言中,不同資料型別的類似方法需要有不同的名稱(例如C中的abs()、labs()、fabs())。
Java 允許對不同類型參數的方法使用相同的名稱,例如 Math 類別的 abs() 方法,它針對不同的數字類型進行了重載。
重載透過允許相關方法共用一個通用名稱來降低複雜性。
方法的正確版本的選擇是由編譯器根據參數類型完成的。
雖然重載方法可以執行不同的活動,但它們必須相關才能保持清晰度和連貫性。
避免對不相關的操作使用重載的方法名稱,因為這可能會混淆程式碼的意圖。
以上是方法重載的詳細內容。更多資訊請關注PHP中文網其他相關文章!