過載與覆蓋的差別

2021-09-07 12:16:15 字數 808 閱讀 5878

對於在同乙個可訪問區內被宣告的幾個具有不同引數列(引數的型別、個數、順序不同)的同名函式,程式會依據不同的引數列表來確定詳細呼叫哪個函式。這樣的機制叫過載(overload),overlaod不關心函式的返回值。

覆蓋(override)是指派生類中存在又一次定義的函式,其函式名、引數列、返回值型別必須同父類的相相應被覆蓋的函式嚴格一致,覆蓋函式和被覆蓋函式僅僅有函式體(花括號裡的部分)不同,當派生類物件呼叫子類中同名函式時。會自己主動呼叫子類中的覆蓋版本號,而不是父類中的被覆蓋版本號。

成員函式被過載(overload)的特徵例如以下:

(1)同樣的範圍(在同乙個類中) ;

(2)函式名稱同樣。

(3)引數不同;

(4)virtualkeyword可有可無。

覆蓋(override)的特徵例如以下:

(a)不同的範圍(分別位於派生類和基類之中);

(b)函式名稱同樣;

(c)引數同樣;

(d)基類函式必須有virtualkeyword。

說明:虛函式總是在派生類中被改寫,這樣的改寫叫做「override」.

override是指派生類重寫基類的虛函式。就像某個類中重寫了還有乙個類中的某個函式,重寫的函式必須有一致的參數列和返回值。override----一直沒有合適的中文詞彙來相應。翻譯為「覆蓋」更貼切。

overload約定俗成地被翻譯為「過載」,是指編寫乙個與已有函式同名可是參數列

不同的函式。比如。乙個函式既能夠接受整型數作為引數。也能夠接受浮點數作為引數。

過載不是一種物件導向的程式設計。而僅僅是一種語法規則。

過載與多型沒有直接關係。

過載與覆蓋

過載 方法名相同,引數列表不同 引數型別 引數個數和引數順序不同 覆蓋 1.子修飾符訪問許可權不能比父類修飾符的許可權低 2.被覆蓋的方法 父類方法 不能用final staic private 修飾 覆蓋和過載的不同 方法覆蓋要求引數列表必須一致,而方法過載要求引數列表必須不一致。方法覆蓋要求返回...

過載與覆蓋

方法的覆蓋和過載具有以下相同點 都要求方法同名 都可以用於抽象方法和非抽象方法之間 方法的覆蓋和過載具有以下不同點 方法覆蓋要求引數列表 引數簽名 必須一致,而方法過載要求引數列表必須不一致。方法覆蓋要求返回型別必須一致,方法過載對此沒有要求。方法覆蓋只能用於子類覆蓋父類的方法,方法過載用於同乙個類...

過載與覆蓋的區別

1.過載 overload 指的是乙個class中多個同名方法,其引數的個數和型別不同。如果引數的個數和型別相同但是返回值型別不同,則不構成過載,反證 我們有時候呼叫方法的時候,不關注返回值型別,這時,不能確定我們呼叫的是哪個方法,會造成麻煩。另外,如果方法中的引數型別不同,則引數順序不同,也是過載...