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