區分多型和過載(寫的真TM好)

2021-08-17 22:49:42 字數 483 閱讀 3788

多型是基於對抽象方法的覆蓋來實現的,用統一的對外介面來完成不同的功能。過載也是用統一的對外介面

來完成不同的功能。那麼兩者有什麼區別呢?

過載,是指允許存在多個同名方法,而這些方法的引數不同。過載的實現是:編譯器根據方法不同的參數列

,對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法。它們的呼叫位址在編譯期

就繫結了。

多型:是指子類重新定義父類的虛方法(virtual,abstract)。當子類重新定義了父類的虛方法後,父類根據

賦給它的不同的子類,動態呼叫屬於子類的該方法,這樣的方法呼叫在編譯期間是無法確定的。

不難看出,兩者的區別在於編譯器何時去尋找所要呼叫的具體方法,對於過載而言,在方法呼叫之前,編譯

器就已經確定了所要呼叫的方法,這稱為「早繫結」或「靜態繫結」;而對於多型,只有等到方法呼叫的那一刻

,編譯器才會確定所要呼叫的具體方法,這稱為「晚繫結」或「動態繫結」。

**

區分多型和過載

多型是基於對抽象方法的覆蓋來實現的,用統一的對外介面來完成不同的功能。過載也是用統一的對外介面 來完成不同的功能。那麼兩者有什麼區別呢?過載,是指允許存在多個同名方法,而這些方法的引數不同。過載的實現是 編譯器根據方法不同的參數列 對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法...

方法的覆寫和過載

在學習中 方法的覆寫和過載老是有人搞混 或者記不清他們之間的細節 方法的過載 概念 方法名稱相同,引數的個數或型別不同 不能有兩個名字相同,引數型別也相同卻返回值不同的方法 構造方法的過載 由於同乙個類中不可能有兩個屬性,名稱相同,型別不同所以構造方法的過載只能是引數的個數不同。方法覆寫 概念 子類...

過載和重寫 繼承和多型的區別

過載,繼承,重寫和多型的區別 1 繼承是子類獲得父類的成員。2 重寫是繼承後重新實現父類的方法。3 過載是在乙個類裡一系列引數不同名字相同的方法。4 多型則是為了避免在父類裡大量過載引起 臃腫且難於維護。網上看到乙個有趣的說法是 繼承是子類使用父類的方法,而多型則是父類使用子類的方法。下面的例子包含...