天天看點

6、多态性-1、多态性概述

面向對象程式設計的真正力量不僅僅在于繼承,而在于将派生類對象當基類對象一樣處理的能力。支援這種能力的機制稱為多态和動态綁定。

1、多态是指同樣的消息被不同類型的對象接收時導緻不同的行為,所謂消息是指對類的成員函數的調用,不同的行為是指不同的實作,也就是調用了不同的函數。

2、多态類型

面向對象的多态性可以分為四類,重載多态、強制多态、包含多态和參數多态,前兩種稱為專用多态,後兩種稱為通用多态。

我們學習過的普通函數及類的成員函數的重載都屬于重載多态。強制多态是指将一個變元的類型加以變化,以符合一個函數或者操作的要求,如加法運算符在進行浮點數與整型數相加時,首先進行類型強制轉換,把整型變為浮點型再相加的情況,就是強制多态的執行個體。

包含多态是研究類族中定義于不同類中的同名成員函數的多态行為,主要是通過虛函數來實作。

參數多态與類模闆相關聯,在使用時必須賦予實際的類型才可以執行個體化。這樣,由類模闆執行個體化的各個類都具有相同的操作,而操作對象的類型卻各不相同。

3、多态的實作

多态從實作的角度來講可以劃分為兩類:編譯時的多态和運作時的多态。前者是在編譯的過程中确定了同名操作的具體操作對象,而後者則是在程式運作過程中才動态确定操作所針對的具體對象。這種确定操作的具體對象的過程就是綁定(binding,也叫做聯編)。綁定是指計算機程式自身彼此關聯的過程,也就是把一個辨別符名和一個存儲位址聯系在一起的過程;用面向對象的術語講,就是把一條消息和一個對象的方法相結合的過程。

綁定階段不同分為:靜态綁定和動态綁定,這兩種綁定過程中分别對應着多态的兩種實作方式。

綁定工作在編譯連接配接階段完成的情況稱為靜态綁定。比如,重載、強制和參數多态。

綁定工作在程式運作階段完成的情況稱為動态綁定。如包含多态操作對象的确定就是通過動态綁定完成的。

繼續閱讀