簡體   English   中英

方法是否重載?

[英]Method overloading or not?

場景:同一個類中有兩個方法,它們具有相同的名稱,具有不同的參數和不同的訪問修飾符。 例如:

public void m1(int a){}
private void m1(String b){}

它是否超載?

是的 - 總之,是的。 引用Oracle的Java教程

這意味着如果類中的方法具有不同的參數列表,則它們可以具有相同的名稱

換句話說 - 訪問修飾符對於此討論是無關緊要的。

讓我們參考這個Java語言規范。

第8.4.9節重載

如果一個類的兩個方法(無論是在同一個類中聲明,還是由一個類繼承,或者一個是聲明的,一個是繼承的)都具有相同的名稱,但簽名不是覆蓋等效的 ,那么方法名稱就是超載。

從8.4.2節,我們知道參數類型是簽名的一部分,並且您的兩個方法在參數類型上有所不同,因此它們是重載。

第8.4.2節方法簽名

兩個方法或構造函數M和N具有相同的簽名,如果它們具有相同的名稱,相同的類型參數(如果有的話)(第8.4.4節),並且在將形式參數類型N調整為類型參數之后M, 相同的形式參數類型

'同一類中同一方法的兩個版本'稱為方法重載或編譯時多態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM