過載和重寫的區別

2021-09-09 07:57:35 字數 1169 閱讀 9312

重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!

重寫的好處在於子類可以根據需要,定義特定於自己的行為。 也就是說子類能夠根據需要實現父類的方法

引數列表必須完全與被重寫方法的相同;

返回型別必須完全與被重寫方法的返回型別相同;

訪問許可權不能比父類中被重寫的方法的訪問許可權更低。例如:如果父類的乙個方法被宣告為public,那麼在子類中重寫該方法就不能宣告為protected。

父類的成員方法只能被它的子類重寫。

宣告為final的方法不能被重寫。

宣告為static的方法不能被重寫,但是能夠被再次宣告。

子類和父類在同乙個包中,那麼子類可以重寫父類所有方法,除了宣告為private和final的方法。

子類和父類不在同乙個包中,那麼子類只能夠重寫父類的宣告為public和protected的非final方法。

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

構造方法不能被重寫。

如果不能繼承乙個方法,則不能重寫這個方法。

過載(overloading) 是在乙個類裡面,方法名字相同,而引數不同。返回型別可以相同也可以不同。

每個過載的方法(或者建構函式)都必須有乙個獨一無二的引數型別列表。

最常用的地方就是構造器的過載。

被過載的方法必須改變引數列表(引數個數或型別不一樣);

被過載的方法可以改變返回型別;

被過載的方法可以改變訪問修飾符;

被過載的方法可以宣告新的或更廣的檢查異常;

方法能夠在同乙個類中或者在乙個子類中被過載。

無法以返回值型別作為過載函式的區分標準。

**(1)方法的名稱相同

(2)都可以用於抽象方法和非抽象方法之間。

(1)方法重寫要求引數簽名必須相同,而方法的過載要求引數簽名必須不同。

(2)方法重寫要求返回型別必須相同,而方法過載對此沒有限制。

(3)方法重寫只能用於子類重寫父類的方法,而方法的過載用於同乙個類的所有方法(包括從父類中繼承的方法)

(4)方法重寫對方法的訪問許可權和丟擲的異常有特殊的要求,而方法的過載對此沒有任何限制

(5)父類的乙個方法只能被子類重寫一次,而乙個方法在所在的類中可以被多次過載。

過載和重寫區別

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

重寫和過載區別

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

重寫和過載的區別

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