多型是基於對抽象方法的覆蓋來實現的,用統一的對外介面來完成不同的功能。過載也是用統一的對外介面
來完成不同的功能。那麼兩者有什麼區別呢?
過載,是指允許存在多個同名方法,而這些方法的引數不同。過載的實現是:編譯器根據方法不同的參數列
,對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法。它們的呼叫位址在編譯期
就繫結了。
多型:是指子類重新定義父類的虛方法(virtual,abstract)。當子類重新定義了父類的虛方法後,父類根據
賦給它的不同的子類,動態呼叫屬於子類的該方法,這樣的方法呼叫在編譯期間是無法確定的。
不難看出,兩者的區別在於編譯器何時去尋找所要呼叫的具體方法,對於過載而言,在方法呼叫之前,編譯
器就已經確定了所要呼叫的方法,這稱為「早繫結」或「靜態繫結」;而對於多型,只有等到方法呼叫的那一刻
,編譯器才會確定所要呼叫的具體方法,這稱為「晚繫結」或「動態繫結」。 頂
1
踩
區分多型和過載(寫的真TM好)
多型是基於對抽象方法的覆蓋來實現的,用統一的對外介面來完成不同的功能。過載也是用統一的對外介面 來完成不同的功能。那麼兩者有什麼區別呢?過載,是指允許存在多個同名方法,而這些方法的引數不同。過載的實現是 編譯器根據方法不同的參數列 對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法...
多型和過載
一.多型 鏈結機制 多型 polymorphism 按字面的意思就是 多種形狀 引用charlie calverts對多型的描述 多型性是允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作 摘自 delphi4 程式設計技術...
過載和多型
多型 多型是建立在重寫基礎之上,子類重寫父類方法 類之間 多型的三個條件 繼承 重寫 父類引用指向子類物件。函式名相同,函式形參相同。呼叫時根據函式型別是虛函式還是普通函式決定呼叫哪乙個。若父類中的函式被定義為虛函式,則子類對該函式的實現被稱為函式的重寫。可以通過指標訪問每乙個方法,這叫做覆蓋。若函...