java 重載與重寫的差別
-
- 1.對多态性的展現不同
- 2.規則不同
- 3.經典面試題
- 個人随筆,個人是一個java實習生,面試了許多家企業,個人感覺重載和重寫的差別幾乎是每個企業都會問到的一個問題,因為它不難,但要需要你對java基礎夠熟悉。
1.對多态性的展現不同
- 重載展現的是編譯多态性
- 重寫展現的是運作多态性
2.規則不同
重載:
- 對象:同一個類的不同方法中
- 參數必須不同,可以是類型,也可以是順序
- 不規定傳回值類型必須一樣
- 可以有不同的權限修飾符
- 方法名必須一樣,才能稱方法與方法之間構成重載
- 可以抛出任意大小的異常
重寫:
- 前提:重寫(覆寫)必須發生在子父類之間,且隻能是子類對父類的方法進行重寫
- 參數清單必須和父類的一樣
- 傳回值類型需一緻
- 權限修飾符子類需大于或等于父類方法權限修飾
- 子類抛的異常需不能大于父類抛出異常
3.經典面試題
1.重載(Overload)和重寫(Override)的差別。重載的方法能否根據傳回類型進行區分?
答:方法的重載和重寫都是實作多态的方式,差別在于前者實作的是編譯時的多态性,而後者實作的是運作時的多态性。重載發生在一個類中,同名的方法如果有不同的參數清單(參數類型不同、參數個數不同或者二者都不同)則視為重載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數清單,有相容的傳回類型,比父類被重寫方法更好通路,不能比父類被重寫方法聲明更多的異常(裡氏代換原則)。重載對傳回類型沒有特殊的要求,不能根據傳回類型進行區分。