天天看點

封裝繼承和多态

一---封裝

萬事萬物皆對象。

封裝的意義:

将屬性和行為作為一個整體。

可以把屬性和行為放在不同的權限下進行管理。

public 類内,類外均可通路

protected 類内可以,類外不可以

private 類内可以,類外不可以

保護和私有的差別在于繼承的時候兒子可以使用父親的保護内容。

成員屬性設定為私有優點

1)可以自己控制讀寫權限

2)對于寫權限,我們可以檢測資料的有效性(比如年齡在0-100歲之間)

二---繼承

可以減少重複的代碼

父類中所有的屬性都會被繼承下來,父類中的私有屬性被編譯器隐藏了,但資料确實繼承下來了。

封裝繼承和多态

三---多态

多态的分類

1)靜态多态:運算符重載,函數重載,複用函數名

2)動态多态:派生類和虛函數實作運作多态

靜态和動态的差別:靜态多态的函數位址早綁定-編譯階段确定函數位址,動态多态的函數位址晚綁定-運作階段确定函數位址。

動态多态的要求:

1)要有繼承關系

2)子類要重寫父類的虛函數

動态多态的使用 :

父類的指針或者引用來指向子類對象

要想實作動态多态 ,父類中的函數必須為虛函數,這樣就可以位址晚綁定。

多态的原理剖析:

如果不加virtual的話占1個位元組,加了virtual之後占4個位元組,說明virtual的底層是個指針。

vfptr(虛函數(表)指針)

v--virtual

f--function

ptr-pointer

繼續閱讀