C 基礎語法 封裝 繼承和多型

2021-10-10 06:20:24 字數 1209 閱讀 5533

封裝:隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。封裝的好處:隱藏類的實現細節;讓使用者只能通過程式設計師規定的方法來訪問資料.

繼承機制是物件導向程式設計使**可以復用的最重要的手段,它允許程式設計師在保持原有的特性基礎上進行擴充套件,增加功能,這樣產生新的類,稱作是派生類。繼承呈現了物件導向程式設計的層析結構,體現了由簡單到複雜的認知過程。繼承是類設計層次的復用

多型分為執行期多型和編譯期多型

對於有相關功能的物件集合,抽象出它們共有的功能集合,在基類中將這些功能宣告為虛介面(虛函式,基類的界面前加上virtual關鍵字),然後由子類繼承基類去重寫這些虛介面,以實現子類特有的具體功能。執行時將會根據物件的實際型別來呼叫相應的函式。當某個類宣告了虛函式時,(1)編譯器將為該類物件安插乙個虛函式表指標,並為該類設定一張(2)唯一的虛函式表,虛函式表中存放的是(3)該類虛函式位址。(4)執行期間通過虛函式表指標與虛函式表去確定該類虛函式的真正實現。

虛函式表是乙個儲存成員函式指標的資料結構,與包含vptr指向該錶的類關聯;虛函式表是由編譯器自動生成與維護的;virtual成員函式會被編譯器放入虛函式表中;存在虛函式時,每個物件都有乙個指向虛函式的指標(vptr指標);在實現多型的過程中,父類和派生類都有vptr指標。

物件中的vptr指標被初始化的時機:物件在建立時,由編譯器對vptr指標進行初始化;只有當物件的構造完全結束後vptr的指向才最終決定下來;父類物件的vptr指向父類的虛函式表,子類物件的vptr指向子類的虛函式表。

多型的三個條件:

1.    繼承的存在(繼承是多型的基礎,沒有繼承就沒有多型).

2.    子類重寫父類的方法(多型下呼叫子類重寫的方法).

3.    父類引用變數指向子類物件(子類到父類的型別轉換).

class animal;

class cat :public animal

對模板引數而言,多型是通過模板具現化和函式過載解析實現的。以不同的模板引數具現化導致呼叫不同的函式,這就是所謂的編譯期多型。

相比較於執行期多型,實現編譯期多型的類之間並不需要成為乙個繼承體系,它們之間可以沒有什麼關係,但約束是它們都有相同的隱式介面。

template class animal

private:

t t;

};class dog

C 基礎封裝,繼承,多型

一 封裝 c 中可使用類來達到資料封裝的效果,這樣可以使資料與方法封裝成單一元素,以便於通過方法訪問資料。除此之外,還可以控制資料的訪問方式。在物件導向程式設計中,大多數都是以類作為資料封裝的基本單位。類將資料和運算元據的方法結合成乙個單位。設計類時,不希望直接訪問類中的資料,而是希望通過方法來訪問...

C 基礎 封裝,繼承,多型

c 中可使用類來達到資料封裝的效果,這樣可以使資料與方法封裝成單一元素,以便於通過方法訪問資料。除此之外,還可以控制資料的訪問方式。在物件導向程式設計中,大多數都是以類作為資料封裝的基本單位。類將資料和運算元據的方法結合成乙個單位。設計類時,不希望直接訪問類中的資料,而是希望通過方法來訪問資料。這樣...

OC基礎語法之封裝繼承多型

封裝 隱藏內部實現,穩定外部介面.封裝就是定義類 定義屬性 定義方法 set方法 提供乙個方法給外界設定成員變數的值,沒有返回值,一定要接收乙個引數,引數型別跟成員變數型別一樣,形參的名稱不能跟成員變數名一樣。get方法 返回物件內部的成員變數,肯定有返回值,返回值與成員變數型別一致,方法名跟成員變...