天天看點

java 重載與重寫的差別(面試考點)

java 重載與重寫的差別

    • 1.對多态性的展現不同
    • 2.規則不同
    • 3.經典面試題
  • 個人随筆,個人是一個java實習生,面試了許多家企業,個人感覺重載和重寫的差別幾乎是每個企業都會問到的一個問題,因為它不難,但要需要你對java基礎夠熟悉。

1.對多态性的展現不同

  1. 重載展現的是編譯多态性
  2. 重寫展現的是運作多态性

2.規則不同

重載:

  1. 對象:同一個類的不同方法中
  2. 參數必須不同,可以是類型,也可以是順序
  3. 不規定傳回值類型必須一樣
  4. 可以有不同的權限修飾符
  5. 方法名必須一樣,才能稱方法與方法之間構成重載
  6. 可以抛出任意大小的異常

重寫:

  1. 前提:重寫(覆寫)必須發生在子父類之間,且隻能是子類對父類的方法進行重寫
  2. 參數清單必須和父類的一樣
  3. 傳回值類型需一緻
  4. 權限修飾符子類需大于或等于父類方法權限修飾
  5. 子類抛的異常需不能大于父類抛出異常

3.經典面試題

1.重載(Overload)和重寫(Override)的差別。重載的方法能否根據傳回類型進行區分?

答:方法的重載和重寫都是實作多态的方式,差別在于前者實作的是編譯時的多态性,而後者實作的是運作時的多态性。重載發生在一個類中,同名的方法如果有不同的參數清單(參數類型不同、參數個數不同或者二者都不同)則視為重載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數清單,有相容的傳回類型,比父類被重寫方法更好通路,不能比父類被重寫方法聲明更多的異常(裡氏代換原則)。重載對傳回類型沒有特殊的要求,不能根據傳回類型進行區分。