Java的方法過載
如果一個類中有多個具有相同名稱但引數不同,與返回值無關的方法,則稱為方法過載。
方法過載提高了程式的可讀性。
在java中過載方法有兩種方式,它們分別是:
通過改變引數的數量
通過更改資料型別
操作方法
(01)修改引數的數量建立兩個方法,第一個add()方法執行兩個數值的相加操作,第二個add()方法執行三個數值的相加操作。在這個例子中,我們建立靜態方法,所以不需要建立例項來呼叫方法
(02)更改引數的資料型別建立兩種資料型別不同的方法第一個add方法接收兩個整數引數,第二個add方法接收兩個雙精度型引數。
(03)問題:為什麼方法過載不能通過更改方法的返回型別?在java中,只通過改變方法的返回型別來實現方法過載是不可能的,因為這樣具有模糊性。 讓我們來看看模糊性是怎麼樣發生的
(04)tln((11,11));//這裡,java如何確定應該呼叫哪個sum()方法?可以過載java main()方法嗎?這是完全可以的。 可以通過方法過載在類中有任意數量的main方法。 但是JVM呼叫main()方法,它只接收字元串陣列作為引數。 讓我們來看一個簡單的例子:
(05)方法過載和型別提升如果沒有找到匹配的資料型別,那麼會隱式地將一個型別提升到另一個型別。 讓我們通過下面的圖示來理解這個概念:
(06)如上圖所示,byte可以被提升為short,int,long,float或double。 short資料型別可以提升為int,long,float或double。 char資料型別可以提升為int,long,float或double等等。使用型別提升方法過載的示例
(07)如果找到匹配使用型別提升方法過載示例如果方法中存在匹配型別引數,則不會執行型別提升方法過載。
(08)在模糊的情況下使用型別提升來實現方法過載的示例如果在方法中沒有匹配的型別引數,並且每個方法都會提升相同數量的引數,那麼會出現歧義。如下示例程式碼,將會產生編譯時錯誤。
特別提示
在java中,只通過更改方法的返回型別來實現方法過載是不可以的