1. 程式人生 > >多型與過載區別

多型與過載區別

多型是基於對抽象方法的覆蓋來實現的,用統一的對外介面來完成不同的功能。過載也是用統一的對外介面 來完成不同的功能。那麼兩者有什麼區別呢? 過載,是指允許存在多個同名方法,而這些方法的引數不同。過載的實現是:編譯器根據方法不同的引數表 ,對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法。它們的呼叫地址在編譯期 就綁定了。 多型:是指子類重新定義父類的虛方法(virtual,abstract)。當子類重新定義了父類的虛方法後,父類根據 賦給它的不同的子類,動態呼叫屬於子類的該方法,這樣的方法呼叫在編譯期間是無法確定的。 不難看出,兩者的區別在於編譯器何時去尋找所要呼叫的具體方法,對於過載而言,在方法呼叫之前,編譯 器就已經確定了所要呼叫的方法,這稱為“早繫結”或“靜態繫結”;而對於多型,只有等到方法呼叫的那一刻 ,編譯器才會確定所要呼叫的具體方法,這稱為“晚繫結”或“動態繫結”。 

原文:https://blog.csdn.net/weigb/article/details/1864192