多態的概念
- 多態
多態的概念:通俗來說,就是多種形態,具體點就是去完成某個行爲,當不同的對象去完成時會產生出不同 的狀態。
2.舉個栗子
比如買票這個行爲,當普通人買票時,是全價買票;學生買票時,是半價買票;軍人買票時是優 先買票。
再舉個栗子: 最近爲了爭奪在線支付市場,支付寶年底經常會做誘人的掃紅包-支付-給獎勵金的活動。那麼 大家想想爲什麼有人掃的紅包又大又新鮮8塊、10塊…,而有人掃的紅包都是1毛,5毛…。其實這背後也是 一個多態行爲。支付寶首先會分析你的賬戶數據,比如你是新用戶、比如你沒有經常支付寶支付等等,那麼 你需要被鼓勵使用支付寶,那麼就你掃碼金額 = random()%99;比如你經常使用支付寶支付或者支付寶賬戶 中常年沒錢,那麼就不需要太鼓勵你去使用支付寶,那麼就你掃碼金額 = random()%1;總結一下:同樣是 掃碼動作,不同的用戶掃得到的不一樣的紅包,這也是一種多態行爲。ps:支付寶紅包問題純屬瞎編,大家 僅供娛樂。
多態的定義及實現
1.多態定義的構成條件
多態是在不同繼承關係的類對象,去調用同一函數,產生了不同的行爲。比如Student繼承了Person。 Person對象買票全價,Student對象買票半價。
那麼在繼承中要構成多態的還有兩個條件:
調用函數的對象必須是指針或者引用
被調用的函數必須是虛函數,且完成了虛函數的重寫
這裏提到的虛函數是什麼呢?
虛函數:就是在類的成員函數的前面加virtual關鍵字
什麼是虛函數的重寫?
虛函數的重寫:派生類中有一個跟基類的完全相同虛函數,我們就稱子類的虛函數重寫了基類的虛函數,完全相同是指:函數名、參數、返回值都相同。另外虛函數的重寫也叫作虛函數的覆蓋