重寫:在子類中將父類的成員方法的名稱保留,重新編寫成員方法的實現內容,更改方法的訪問權限,修改返回類型的為父類返回類型的子類。
一些規則:
重寫發生在子類繼承父類
參數列表必須完全與被重寫方法的相同
重寫父類方法時,修改方法的權限只能從小范圍到大范圍
返回類型與被重寫方法的返回類型可以不相同,但是必須是父類返回值的子類(JDK1.5 及更早版本返回類型要一樣,JDK1.7 及更高版本可以不同)
訪問權限不能比父類中被重寫的方法的訪問權限更低。如:父類的方法被聲明為 public,那么子類中重寫該方法不能聲明為 protected
重寫方法不能拋出新的檢查異常和比被重寫方法申明更寬泛的異常(即只能拋出父類方法拋出異常的子類)
聲明為 final 的方法不能被重寫
聲明為 static 的方法不能被重寫
聲明為 private 的方法不能被重寫
重載:一個類中允許同時存在一個以上的同名方法,這些方法的參數個數或者類型不同
重載條件:
- 方法名相同
- 參數類型不同 或 參數個數不同 或 參數順序不同
規則:
被重載的方法參數列表(個數或類型)不一樣
被重載的方法可以修改返回類型
被重載的方法可以修改訪問修飾符
被重載的方法可以修改異常拋出
方法能夠在同一個類中或者在一個子類中被重載
無法以返回值類型作為重載函數的區分標准
重載和重寫的區別:
- 作用范圍:重寫的作用范圍是父類和子類之間;重載是發生在一個類里面
- 參數列表:重載必須不同;重寫不能修改
- 返回類型:重載可修改;重寫方法返回相同類型或子類
- 拋出異常:重載可修改;重寫可減少或刪除,一定不能拋出新的或者更廣的異常
- 訪問權限:重載可修改;重寫一定不能做更嚴格的限制