過載與覆蓋的區別

2021-08-14 13:41:53 字數 506 閱讀 6464

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

另外,如果方法中的引數型別不同,則引數順序不同,也是過載。

2.覆蓋(override)指的是,子類與父類之間,子類不滿意父類中的方法,可以在子類中,重寫同名且引數及返回值型別均相同的方法,子類呼叫這個方法名時,即呼叫子類重寫的這個方法,而不是父類的方法。

對介面方法的實現,也是一種覆蓋。

另外,建構函式不能被繼承,因為子類繼承父類的時候,先執行父類建構函式;具體的說就是執行父類時就會先「呼叫」父類的建構函式,注意「呼叫」和繼承不是乙個含義,實質上是「自動執行」。

繼承(extends)的含義其實是「擴充套件」,子類完全沒必要擴充套件父類的建構函式,因為反正每次調子類的時候都會「自動執行」它父類的建構函式,如果真的需要子類建構函式特殊的形式,子類直接修改或過載自己的建構函式就好了。

過載與覆蓋的區別

最近一直在刷面試題,遇到 過載與覆蓋的區別 於是記錄一波。方法的覆蓋是子類和父類之間的關係,是垂直關係 方法的過載是同乙個類中方法之間的關係,是水平關係。覆蓋只能由乙個方法,或只能由一對方法產生關係 方法的過載是多個方法之間的關係。覆蓋要求引數列表相同 過載要求引數列表不同。覆蓋關係中,呼叫那個方法...

C 過載與覆蓋的區別

過載 overload 是指編寫乙個與已知函式同名但是參數列不同的函式。過載主要屬於靜態編聯範疇,是在編譯期就完成位址的分配。普通成員函式的過載主要分成三部分 1 在乙個類中說明過載。如 show int a,char b 在編譯期經過編譯器修飾後函式名會變成int char show show c...

C 多型,過載與覆蓋的區別

父類有乙個虛函式,子類也有乙個同名函式,且這個同名函式擁有相同引數 包括引數型別,數量和順序 多型與類的繼承相關。父類有乙個非虛函式,子類也有乙個同名函式,且這個同名函式擁有相同引數 包括引數型別,數量和順序 覆蓋與類的繼承相關。子類中的覆蓋函式,通常會先呼叫父類中被覆蓋的函式,然後再新增自己特有的...