java 子類重寫父類的方法的注意事項

若想實現一個合格重寫方法,而不是重載,那麼必須同時知足下面的要求!繼承

A、重寫規則之一:重寫方法不能比被重寫方法限制有更嚴格的訪問級別。 (可是能夠更普遍,好比父類方法是包訪問權限,子類的重寫方法是public訪問權限。)編譯器

好比:Object類有個toString()方法,開始重寫這個方法的時候咱們總容易忘記public修飾符,編譯器固然不會放過任何教訓咱們 的機會。出錯的緣由就是:沒有加任何訪問修飾符的方法具備包訪問權限,包訪問權限比public固然要嚴格了,因此編譯器會報錯的。編譯

B、重寫規則之二:參數列表必須與被重寫方法的相同。 重寫有個孿生的弟弟叫重載,也就是後面要出場的。若是子類方法的參數與父類對應的方法不一樣,那麼就是你認錯人了,那是重載,不是重寫。權限

C、重寫規則之三:返回類型必須與被重寫方法的返回類型相同。方法

 父類方法A:void eat(){}異常

子類方法B:int eat(){} 二者雖然參數相同,但是返回類型不一樣,因此不是重寫。兼容

父類方法A:int eat(){} 參數

子類方法B:long eat(){} 返回類型雖然兼容父類,可是不一樣就是不一樣,因此不是重寫。void

D、重寫規則之四:重寫方法不能拋出新的異常或者比被重寫方法聲明的檢查異常更廣的檢查異常。可是能夠拋出更少,更有限或者不拋出異常

E、重寫規則之五:不能重寫被標識爲final的方法。  F、重寫規則之六:若是一個方法不能被繼承,則不能重寫它。

相關文章
相關標籤/搜索