1. 程式人生 > >c++中 override 和 overLoad的區別

c++中 override 和 overLoad的區別

override(重寫,覆蓋) 
1、方法名、引數、返回值相同。 
2、子類方法不能縮小父類方法的訪問許可權。 
3、子類方法不能丟擲比父類方法更多的異常(但子類方法可以不丟擲異常)。 
4、存在於父類和子類之間。 
5、方法被定義為final不能被重寫。 

overload(過載,過載) 
1、引數型別、個數、順序至少有一個不相同。   
2、不能過載只有返回值不同的方法名。 
3、存在於父類和子類、同類中。 

方法的重寫(Overriding)和過載(Overloading)是Java多型性的不同表現。 
重寫(Overriding)是父類與子類之間多型性的一種表現,而過載(Overloading)是一個類中多型性的一種表現。 

如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被"遮蔽"了. 

如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數型別或有不同的引數次序,則稱為方法的過載(Overloading)。不能通過訪問許可權、返回型別、丟擲的異常進行過載. 

1. Override 特點 
1、覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果; 
2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致; 
3、覆蓋的方法所丟擲的異常必須和被覆蓋方法的所丟擲的異常一致,或者是其子類; 
4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。 

2.Overload 特點 
1、在使用過載時只能通過不同的引數樣式。例如,不同的引數型別,不同的引數個數,不同的引數順序(當然,同一方法內的幾個引數型別必須不一樣,例如可以是fun(int, float), 但是不能為fun(int, int)); 
2、不能通過訪問許可權、返回型別、丟擲的異常進行過載; 
3、方法的異常型別和數目不會對過載造成影響; 
4、對於繼承來說,如果某一方法在父類中是訪問許可權是priavte,那麼就不能在子類對其進行過載,如果定義的話,也只是定義了一個新方法,而不會達到過載的效果。

相關推薦

c++ override overLoad區別

override(重寫,覆蓋)  1、方法名、引數、返回值相同。  2、子類方法不能縮小父類方法的訪問許可權。  3、子類方法不能丟擲比父類方法更多的異常(但子類方法可以不丟擲異常)。  4、存在於父類和子類之間。  5、方法被定義為final不能被重寫。  overload(過載,過載)  1、引數型別、

關於C++overrideoverload的總結疑問

 C++是一門magic的語言,很多機制複雜得讓人頭疼,但是這種迷宮競走的狀態讓人精力十足,我發誓了,不搞明白不罷休,同時也希望得到高手們的指點和幫助~ override   函式名和引數型別以及返回型別必須相同,即簽名都是一致的——或者叫相貌和衣服都是一樣的,一般用在繼承

c++區別

string.h string.h是C語言裡面關於字元陣列的函式定義的標頭檔案,常用函式有strlen、strcmp、strcpy等等,更詳細的資訊可以自己檢視(面向過程) cstring CString常用於MFC程式設計中,是屬於MFC的類,如從對話方塊中利用GetW

Delphioverrideoverload的定義區別是什麼?

overload是過載;相同的函式名,引數不同,使用不同的函式體   override   是對父類宣告的vitural或dynamic方法進行覆蓋 overload的使用方法:   function max(a, b :Byte):byte;overload;

C#closedispose區別

Close是停業整頓 Dispose是炸燬 停業了,可以通過公關,再重開。物還是原來的物 炸燬了,想再開張,就只有重頭建起 C#中解構函式是有垃圾蒐集器來呼叫的,當所引用的堆上的資料當無效時,會隱式呼叫。一般表現為當引用變數超出其作用域時就會呼叫。 Close函式和Dis

C++ #if #ifdef 區別

fde 編譯器 就是 開頭 編譯程序 如果 都是 條件 程序 以#開頭的都是預編譯指令,就是在正式編譯之前,編譯器做一些預處理的工作#if 條件語句程序段1 //如果條件語句成立,那麽就編譯程序段1#endif程序段2//如果條件不語句成立,那麽就編譯程序段2#ifndef

C#newoverride區別

在C#中,override和new都會覆蓋父類中的方法。那它們兩者之前有什麼區別呢? override是指“覆蓋”,是指子類覆蓋了父類的方法。子類的物件無法再訪問父類中的該方法。 new是指“隱藏”,是指子類隱藏了父類的方法,當然,通過一定的轉換,可以在子類的物件中訪問父類的

C#&&&,|||區別

.com blank img cnblogs png ref bsp 筆記 區別 當兩者都為邏輯運算符時。 其實沒什麽差別。 &&和||當已經確定結果時,不會對第二個操作數求值。也不知道什麽情況會用到這個差別。做個筆記好了。 http://blog.cs

C++typenameclass的區別

type .get true 能夠 class .... ray pla 依賴 在c++Template中很多地方都用到了typename與class這兩個關鍵字,而且好像可以替換,是不是這兩個關鍵字完全一樣呢? 相信學習C++的人對class這個關鍵字都非常明白,clas

c#ClassStruct使用與性能的區別

回收 數據結構 com 垃圾回收 父類 改變 med .cn 指針 在Unity中很多已經定義為結構體的數據結構 Vector2, Vector3 和 Vector4 Rect Color和Color32 Bounds Touch 1.Class為引用類型,Str

C#MonitorLock以及區別

能夠 program tor 試圖 tro 指定 object span () 原文地址:http://www.cnblogs.com/chengxingliang/p/3150731.html   Monitor對象   1.Monitor.Enter(object)方法

C#Convertparse的區別

處理 捕獲 用戶 整數 request 存在 query 轉換 中間 Convert.ToInt32()與int.Parse()的區別(1)這兩個方法的最大不同是它們對null值的處理方法: Convert.ToInt32(null)會返回0而不會產生任何異常,但int.P

C#&&&的區別

poi log sha 與操作 位運算 orm 第一個 pre 繼續 SiKi老師讓我們自行查一下&和&&的區別,So... 1)&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都為tru

C/C++nearfar的區別

語言 補充 detail net 計算機體系結構 偏移 單元 體系結構 all C/C++中near和far的區別 關鍵字near和far受目標計算機體系結構的影響。目前編程中使用不多。 near關鍵字創建一個指向可尋址內存低端部分的目標指針。這些

C#virtualabstract的區別

tool 保留 到你 variable var 入口 printf static write 解讀一 c# 中 Abstract和Virtual比較容易混淆,都與繼承有關,並且涉及override的使用。下面討論一下二者的區別: 一、Virtual方法(虛方法)   vir

C#AbstractVirtual的區別

保留 一個 strac 虛擬 ati AI 靜態方法 void ride c# 中 Abstract和Virtual比較容易混淆,都與繼承有關,並且涉及override的使用。下面討論一下二者的區別: 一、Virtual方法(虛方法)   virtual 關鍵字用於在基

C#知識點總結系列:3、C#DelegateEvent以及它們的區別

的區別 sent () exit 功能 final 通知 bsp t對象 1.Monitor.Enter(object)方法是獲取鎖,Monitor.Exit(object)方法是釋放鎖,這就是Monitor最常用的兩個方法,當然在使用過程中為了避免獲取鎖之後因為異常,致鎖

C++指標引用的區別、以及引用取地址符&的區別

一. 指標和引用的區別 對於指標來說,它是一個地址,這個地址是一個數值,那麼就意味這個數值可以為0(空指標),也可以為其他,即指標可以不指向任何東西。 而對於引用來說,他是一個外號,外號一定是“某個存在物體”的外號,所以引用不能為空,即不能存在空引用。例如我們給小明起了個外號:明明,那我們說

c#DelegateEvent區別

     記:( 如果想直接進入正題請略過這段)最近開始積累一些以前知道的和不知道的C#,Unity3D,Shader知識。上大學的時候只顧好好考研,好好打球,好好彈吉他,沒有太多接觸技術部落格(誰知後來硬生生成了一個文藝的程式設計師。。。)。讀研的時候寫部落

初夏小談:C++“指標”“引用“”的區別

1.引用只能繫結一個實體,而指標可以指向不同實體2.使用指標時要判空,而引用不需要因此更安全3.引用在定義時必須初始化,指標不做要求4.在sizeof中:引用結果是引用型別的大小,但指標始終是地址空間所佔位元組個數 void Size() { long long x =