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