物件導向重寫(override)與過載(overload)區別
一、重寫(override)
override是重寫(覆蓋)了一個方法,以實現不同的功能。一般是用於子類在繼承父類時,重寫(重新實現)父類中的方法。
重寫(覆蓋)的規則:
1、重寫方法的引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過載.
2、重寫方法的訪問修飾符一定要大於被重寫方法的訪問修飾符(public>protected>default>private)。
3、重寫的方法的返回值必須和被重寫的方法的返回一致;
4、重寫的方法所丟擲的異常必須和被重寫方法的所丟擲的異常一致,或者是其子類;
5、被重寫的方法不能為private,否則在其子類中只是新定義了一個方法,並沒s有對其進行重寫。
6、靜態方法不能被重寫為非靜態的方法(會編譯出錯)。
Ps:
override就是子類將父類的方法重新實現了一遍。
new就是說這個方法就是子類自己的,跟父類沒有任何繼承關係關係,僅僅是重名
為什麼子類要重寫方法?
由於父類中的方法功能過於簡單,或者不適用於子類,這種情況需要對父類方法在子類中重寫。
例如:Animal中speak方法,輸出為“我是一個動物”, Cat是Animal的子類,這時如果直接呼叫父類的方法就有點不太合適,就需要在子類中重寫speak方法。
方法重寫規則
方法重寫規則:兩同兩小一大
兩同:方法名相同,引數列表相同
兩小:被重寫的方法在子類中的返回值型別的範圍比父類小或者與父類相同
被覆蓋的方法在子類中丟擲的異常範圍比父類小或者與父類相同
一大:被覆蓋的方法在子類中訪問控制許可權比父類的大或者相等
二、overload是過載
一般是用於在一個類內實現若干過載的方法,這些方法的名稱相同而引數形式不同。
過載的規則:
1、在使用過載時只能透過相同的方法名、不同的引數形式實現。不同的引數型別可以是不同的引數型別,不同的引數個數,不同的引數順序(引數型別必須不一樣);
2、不能透過訪問許可權、返回型別、丟擲的異常進行過載;
3、方法的異常型別和數目不會對過載造成影響;
多型的概念比較複雜,有多種意義的多型,一個有趣但不嚴謹的說法是:繼承是子類使用父類的方法,而多型則是父類使用子類的方法。
一般,我們使用多型是為了避免在父類裡大量過載引起程式碼臃腫且難於維護。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4830/viewspace-2799592/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java 重寫(Override)與過載(Overload)JavaIDE
- override(重寫) and overload(過載)IDE
- Java-override重寫與overload過載JavaIDE
- 過載(Overload)和重寫(Override)的區別。過載的方法能否根據返回型別進行區分IDE型別
- C#關鍵字之過載overload、重寫override、覆寫overwrite(new)詳解C#IDE
- 二十二、SpringCloud分散式微服務雲架構之Java 重寫(Override)與過載(Overload)SpringGCCloud分散式微服務架構JavaIDE
- Java—重寫與過載的區別Java
- 物件導向和麵向過程的區別物件
- 過載和重寫的區別
- 解釋下什麼是物件導向?物件導向和麵向過程的區別?物件
- 心得 : 物件導向和麵向過程的區別【分享】物件
- 方法重寫(Override)IDE
- java中程序導向和麵向物件區別?Java物件
- C++中過載、重寫、重定義的區別C++
- JavaSE —— 第11步 —— 最關鍵的一點(物件導向) 11.1物件導向和麵向過程的區別Java物件
- 物件導向與程式導向物件
- 程式導向與物件導向物件
- 19、Overload和Override的區別。Overloaded的方法是否可以改變返回值的型別?IDE型別
- 關於物件導向和麵向過程本質的區別(個人感悟)物件
- php物件導向知識 this,self,parent的區別PHP物件
- 重溫物件導向核心上物件
- 物件導向和麵向過程物件
- TypeScript與物件導向TypeScript物件
- Java物件導向——類與物件Java物件
- php中的程式導向與物件導向PHP物件
- 物件導向-物件導向思想物件
- 12 Python物件導向程式設計:運算子過載Python物件程式設計
- python物件導向思想(類與物件)Python物件
- [寫作中...]Js物件導向(2): 建立物件JS物件
- JS物件導向Object型別JS物件Object型別
- 物件導向與UML圖物件
- 面試官:Java的重寫和過載有什麼區別?面試Java
- 重寫、覆蓋、過載、多型幾個概念的區別分析多型
- Python之物件導向和麵向過程Python物件
- Java中方法重寫與方法過載Java
- Javascript物件導向與繼承JavaScript物件繼承
- 物件導向OO與DSL - typeswitch物件
- 『無為則無心』Python物件導向 — 54、重寫和super()函式Python物件函式