重寫和過載的區別

2021-09-07 23:25:54 字數 622 閱讀 9742

方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。

過載發生在乙個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;

重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回型別,比父類被重寫方法更好訪問,不能比父類被重寫方法宣告更多的異常(黎克特制代換原則)。過載對返回型別沒有特殊的要求。

方法過載的規則:

1.方法名一致,引數列表中引數的順序,型別,個數不同。

2.過載與方法的返回值無關,存在於父類和子類,同類中。

3.可以丟擲不同的異常可以有不同修飾符

方法重寫的規則:

1.引數列表必須完全與被重寫方法的一致,返回型別必須完全與被重寫方法的返回型別一致。

2.構造方法不能被重寫,宣告為 final 的方法不能被重寫,宣告為 static 的方法不能被重寫,但是能夠被再次宣告。

3.訪問許可權不能比父類中被重寫的方法的訪問許可權更低。

4.重寫的方法能夠丟擲任何非強制異常(uncheckedexception,也叫非執行時異常),無論被重寫的方法是否丟擲異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法宣告的更廣泛的強制性異常,反之則可以。

過載和重寫區別

區別就是 過載 只在自己內部類 繼承的時候通過變換返回引數型別和引數個數來實現的 或者只在乙個類中的話,就是通過構造方法的引數不同來進行過載 左邊的是重寫,右邊的是過載 右邊子類的方法和父類的方法是完全兩個方法,因為引數變了 重寫 子類和父類之間 是子類實現父類同名方法,而且方法內部的引數型別要一模...

重寫和過載區別

當子類繼承父類的方法,這些方法不滿足自身需求時,子類可以重寫從父類繼承的方法。重寫的規則 修飾符 返回型別 方法名 引數 public void skill package jicheng public class dog extends anima package jicheng 子類 publi...

重寫和過載的區別

過載是指同乙個類中有若干個名稱相同但引數不同的方法。呼叫方法時,系統會根據實參情況,呼叫引數完全匹配的那個方法。重寫是指在繼承關係中,在派生類中重寫由基類繼承來的方法,這時基類和派生類中就有兩個同名的方法。系統根據物件的 實際型別呼叫相應版本的方法,當物件型別為基類時,系統呼叫基類中的方法。當物件型...