若是一個類從它的父類繼承了一個方法,若是這個方法沒有被標記爲 final ,就能夠對這個方法進行重寫。編程
重寫的好處是:可以定義特定於子類類型的行爲,這意味着子類可以基於要求來實現父類的方法。函數
在面向對象編程中, overriding 意味着去重寫已經存在的方法。對象
方法重寫規則
- 重寫方法的參數列表應該與原方法徹底相同。
- 返回值類型應該和原方法的返回值類型同樣或者是它在父類定義時的子類型。
- 重寫函數訪問級別限制不能比原函數高。舉個例子:若是父類方法聲明爲公有的,那麼子類中的重寫方法不能是私有的或是保護的。
- 只有被子類繼承時,方法才能被重寫。
- 方法定義爲 final,將致使不能被重寫。
- 一個方法被定義爲 static,將使其不能被重寫,可是能夠從新聲明。
- 一個方法不能被繼承,那麼也不能被重寫。
- 和父類在一個包中的子類可以重寫任何沒有被聲明爲 private 和 final 的父類方法。
- 和父類不在同一個包中的子類只能重寫 non-final 方法或被聲明爲 public 或 protected 的方法。
- 一個重寫方法可以拋出任何運行時異常,無論被重寫方法是否拋出異常。然而重寫方法不該該拋出比被重寫方法聲明的更新更普遍的已檢查異常。重寫方法可以拋出比被重寫方法更窄或更少的異常。
- 構造函數不能重寫。
使用 super 關鍵字
當調用父類的被重寫的方法時,要用關鍵字 super。繼承