Java中方法签名signature、方法重载以及“两同两小一大”的方法覆盖(方法重写)总结
1. 方法
1.1 方法
實現了某一功能,代碼可以復用
1.2?方法簽名
java中每個方法都有一個簽名,包含方法名和參數列表(類型、個數以及順序),只要其中一個不同,方法的簽名不同,也就是屬于不同的方法。但注意,簽名不包含返回值類型,定義如下圖。
?如下圖,只要簽名相同,就認為是同個方法,所以即使我們設置返回值類型不同時,會提示我們方法“topo(int)”已經被定義,所以在實際開發中不要出現簽名相同,但返回值類型不同的方法。
?
2. 方法重載(overload)
2.1 定義:同一個類中多個方法有相同的方法名,但是參數列表不同稱作方法重載(不考慮修飾符和返回值類型)。
2.2 優點:可以調用同一個方法,傳入不同參數實現相似的功能,便于程序員開發。
2.3 使用:在實現功能相似時,為了便于記憶,方便使用,考慮使用方法重載。
?
3. 方法覆蓋或者方法重寫(override、overwrite)
3.1 定義及使用:子類繼承父類后,父類的方法功能滿足不了子類的需求,子類有必要對繼承的父類方法進行方法覆蓋。父類的構造方法以及private修飾的私有方法不能被繼承,也就不能被覆蓋。
3.2 構成方法覆蓋:子類重寫的方法和父類方法要有相同的方法名和參數列表;子類方法的返回類型要小于等于父類方法返回類型(也就是子類方法的返回類型要么是父類方法返回類型的子類,要么返回值類型一樣);子類方法拋出的異常類型要小于等于父類方法拋出的類型;子類方法訪問權限大于等于父類方法訪問權限。口訣就是“兩同兩小一大”。
?
3.3 以下是子類方法返回類型必須小于等于父類方法返回類型的示例。從代碼可以看出子類方法返回類型Dog是父類方法返回類型Pet的子類時,覆蓋成功;反之,編譯器則報錯:子類TestPro中的dko(int)方法和父類Pok的dko(int)方法沖突,嘗試使用不兼容的返回值類型。
????
3.4 以下是子類方法返拋出異常必須小于等于父類方法拋出異常的示例。首先,由于子類方法拋出兩個異常DateTimeException和BindException是父類方法拋出一個異常Exception的子類,所以覆蓋成功,所以異常只考慮是不是父類,而不是考慮異常數量的多少;反之,編譯器則報錯:子類TestPro中的dko(int)方法和父類Pok的dko(int)方法沖突,被覆蓋的方法沒有拋出java.lang.Exception。
?
3.5?以下是子類方法訪問權限必須大于等于父類方法訪問權限的示例。首先,當子類方法訪問權限public大于父類方法訪問權限private時,方法覆蓋成功;反之,編譯器則報錯:子類TestPro中的dko(int)方法和父類Pok的dko(int)方法沖突,試圖分配較弱的訪問權限private,而父類方法是public。
??
?
總結
以上是生活随笔為你收集整理的Java中方法签名signature、方法重载以及“两同两小一大”的方法覆盖(方法重写)总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java引入import其它目录的自定义
- 下一篇: Java中的System.out.pri