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