重寫的原則:
- 重寫方法的方法名稱、參數列表必須與原方法的相同,返回類型可以相同也可以是原類型的子類型(從Java SE5開始支持)。
- 重寫方法不能比原方法的訪問權限小。
- 重寫方法不能比原方法拋出更多的異常。
- 被重寫的方法不能是final類型(因爲final修飾的方法是無法重寫的),private類型(在其子類中只是新定義了一個方法,並沒有對其進行重寫),static類型(方法重寫是基於運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,所以概念上不適用。)。
方法重載的原則:
- 方法名稱必須相同。
- 參數列表必須不同(個數不同、或類型不同、參數類型排列順序不同等)。
- 方法的返回類型可以相同也可以不相同。(僅僅返回類型不同不足以成爲方法的重載。)
重寫和重載的區別:
- 方法重寫要求參數列表必須一致,而方法重載要求參數列表必須不一致。
- 方法重寫要求返回類型必須一致(或爲其子類型),方法重載對此沒有要求。
- 方法重寫對方法的訪問權限和拋出的異常有特殊的要求,而方法重載在這方面沒有任何限制。
- 方法重寫只能用於子類重寫父類的方法,而方法重載不光可以用於子類重載父類的方法,還可以發生在同一類中。
- 父類的一個方法只能被子類重寫一次,而一個方法可以在所有的類中可以被重載多次。