重寫和過載的區別

2021-08-08 22:17:30 字數 900 閱讀 2266

一、重寫(override)

override是重寫(覆蓋)了乙個方法,以實現不同的功能。一般是用於子類在繼承父類時,重寫(重新實現)父類中的方法。

重寫(覆蓋)的規則:

1、重寫方法的引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過載.

2、重寫方法的訪問修飾符一定要大於被重寫方法的訪問修飾符(public>protected>default>private)。

3、重寫的方法的返回值必須和被重寫的方法的返回一致;

4、重寫的方法所丟擲的異常必須和被重寫方法的所丟擲的異常一致,或者是其子類;

5、被重寫的方法不能為private,否則在其子類中只是新定義了乙個方法,並沒s有對其進行重寫。

6、靜態方法不能被重寫為非靜態的方法(會編譯出錯)。

二、overload是過載,一般是用於在乙個類內實現若干過載的方法,這些方法的名稱相同而引數形式不同。

過載的規則:

1、在使用過載時只能通過相同的方法名、不同的引數形式實現。不同的引數型別可以是不同的引數型別,不同的引數個數,不同的引數順序(引數型別必須不一樣);

2、不能通過訪問許可權、返回型別、丟擲的異常進行過載;

3、方法的異常型別和數目不會對過載造成影響;

多型的概念比較複雜,有多種意義的多型,乙個有趣但不嚴謹的說法是:繼承是子類使用父類的方法,而多型則是父類使用子類的方法。

一般,我們使用多型是為了避免在父類裡大量過載引起**臃腫且難於維護。

舉個例子:

注意********類的方法是重寫,而rectangle類的方法是過載。對兩者比較,可以發現多型對過載的優點:

如果用過載,則在父類裡要對應每乙個子類都過載乙個取得邊數的方法;

如果用多型,則父類只提供取得邊數的介面,至於取得哪個形狀的邊數,怎樣取得,在子類裡各自實現(重寫)。

過載和重寫區別

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

重寫和過載區別

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

重寫和過載的區別

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