重寫 覆蓋 過載 多型幾個概念的區別

2021-07-05 01:33:07 字數 1184 閱讀 5171

override-->重寫(=覆蓋) overload-->過載  polymorphism-->多型

override

是重寫了乙個方法,已實現不同的功能。一般是子類繼承父類時,重寫(重新實現)父類的方法。

重寫(覆蓋)的規則:

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

2、重寫的方法的修飾符必須大於被重寫方法的修飾符(public>protected>default>private)。

3、重寫的方法的返回值必須與被重寫的方法的返回一致。

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

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

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

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

過載的規則:

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

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

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

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

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

舉個例子:

public class shape 

public boolean isshape()

public int getsides()

public int getsides(******** tri)

public int getsides(rectangle rec) }

class ******** extends shape 

} class rectangle extends shape 

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

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

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

重寫 覆蓋 過載 多型幾個概念的區別分析

override是重寫 覆蓋 了乙個方法,以實現不同的功能。一般是用於子類在繼承父類時,重寫 重新實現 父類中的方法。重寫 覆蓋 的規則 1 重寫方法的引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過載.2 重寫方法的訪問修飾符一定要大於被重寫方法的訪問修飾符 public prote...

重寫 覆蓋 過載 多型幾個概念的區別分析

重寫 覆蓋 過載 多型幾個概念的區別分析 override 重寫 覆蓋 overload 過載 polymorphism 多型 override是重寫 覆蓋 了乙個方法,以實現不同的功能。一般是用於子類在繼承父類時,重寫 重新實現 父類中的方法。重寫 覆蓋 的規則 1 重寫方法的引數列表必須完全與被...

重寫 覆蓋 過載 多型幾個概念的區別分析

override 重寫 覆蓋 overload 過載 polymorphism 多型 override是重寫 覆蓋 了乙個方法,以實現不同的功能。一般是用於子類在繼承父類時,重寫 重新實現 父類中的方法。重寫 覆蓋 的規則 1 重寫方法的引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過...