這篇文章帶給大家的內容是關於Java中方法覆蓋與方法重載的對比介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
方法簽章
方法簽章是指方法的參數型別,順序與數位.不包含方法名稱.
重載
重載必須滿足以下條件
方法名稱相同
方法的參數類型,數量和順序至少一項不同
方法的回傳類型可以不同
方法的存取權限修飾符可以不同
#覆蓋
如果在子類別中定義的一個方法,其名稱,返回類型及參數簽名正好與父類中某個方法的名稱、返回類型及參數簽名相匹配,那麼子類覆蓋了父類的方法。
覆寫必須滿足以下條件:
子類別方法的名稱、參數簽章和回傳類型必須與父類別方法保持一致。
子類別方法不能縮小父類別方法的存取權限。
如果沒有這個限制,會與java語言的多型機制發生衝突。
//创建父类型的变量,引用子类的实例 Parent parent = new Child(); //调用的是子类实例的方法,如果子类覆盖这个方法时,缩小了访问权限,可能会造成无法访问到子类实例的这个方法 parent.method();
子類別方法不能拋出比父類別方法更多的異常.子類別方法拋出的異常必須與父類別方法拋出的異常相同,或者父類別方法拋出的異常類別是父類別方法拋出異常類別的子類別.
方法覆蓋只存在於子類別和父類別(包括直接父類別和間接父類別)之間.在同一個類別中方法只能被重載,不能被覆寫.
父類別的靜態方法不能被子類別覆寫為非靜態方法.
父類別的非靜態方法不能被子類別覆寫為靜態方法
父類別的私有方法不能被類別覆寫
父類別的非抽象方法可以被子類別覆寫為抽象方法
異同
1、相同點
方法名稱要保持一致
2、不同點
方法覆寫要求參數簽章一致,而方法重載要求參數簽章必須不一致.
覆寫要求回傳類型一致,或子類別方法傳回型別小於父類別方法,重載對此不做限制.
覆寫只能用於子類別覆寫父類別的方法,重載用於同一個類別的所有方法(包括從父類別繼承而來的方法).
覆寫對方法的存取權限和拋出例外有要求,重載不做限制.
父類別的一個方法只能被子類別覆蓋一次,而一個方法在所在的類別中可以被重載多次.
#以上是Java中方法覆蓋與方法重載的比較介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!