1. 程式人生 > >區分多型和過載(寫的真TM好)

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

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

器就已經確定了所要呼叫的方法,這稱為“早繫結”或“靜態繫結”;而對於多型,只有等到方法呼叫的那一刻
,編譯器才會確定所要呼叫的具體方法,這稱為“晚繫結”或“動態繫結”。