繼承中子類重寫父類方法必須滿足條件
阿新 • • 發佈:2019-02-18
一、描述
子類重寫(覆蓋)父類的方法必須滿足的條件:
1.父類中的方法在子類中必須可見,即子類繼承了父類中的該方法(可以顯式的使用super關鍵字來訪問父類中的被重寫的方法), 如果父類中的方法為private型別的,那麼子類則無法繼承,也無法覆蓋。
2.子類和父類的方法必須是例項方法,如果父類是static方法而子類是例項方法,或者相反都會報錯。 如果父類和子類都是static方法,那麼子類隱藏父類的方法,而不是重寫父類方法。
3.子類和父類的方法必須要具有相同的函式名稱、引數列表,並且子類的返回值與父類相同或者是父類返回型別的子型別(jdk1.5之後)。 如果方法名稱相同而引數列表不同(返回型別可以相同也可以不同),那麼只是方法的過載,而非重寫。 如果方法名稱和引數列表相同,返回值型別不同,子類返回值型別也不是父類返回值型別的子類,編譯器就會報錯。
4.子類方法的訪問許可權不能小於父類方法的訪問許可權(可以具有相同的訪問許可權或者子類的訪問許可權大於父類)。 訪問許可權由高到低:public、protected、包訪問許可權、private。如果子類方法的訪問許可權低於父類,則編譯器會給出錯誤資訊
5.子類方法不能比父類方法丟擲更多的編譯時異常(不是執行時異常),即子類方法丟擲的編譯時異常或者和父類相同或者是父類異常的子類。