C 的封裝 繼承 多型

2021-08-04 23:49:33 字數 1358 閱讀 9112

物件導向的三大特性:

封裝、繼承、多型

封裝性:

所謂封裝性就是將某些東西包裝起來,外界無法直接使用,只能通過某些方式才能訪問到。物件導向理念是萬物皆物件,都有其特徵和行為,我們把「成員變數」理解為特徵,把「成員函式」理解為行為。被封裝的特性只能通過特定的行為去訪問。

訪問限定符:public、protected、private體現了類的封裝。

繼承:繼承是通過已有的類派生出新的類,新的類包含已有類的成員物件和成員函式,並且可以增加新的功能,已有的類被稱為父類/基類,新的類被稱為子類/派生類。

多型:子類對父類的虛函式進行重寫,通過父類指標或引用來指向或引用父類的物件和子類的物件,來實現對子類和父類重寫虛函式的呼叫,從而實現一種介面,多種方法。即多型。多型屬於動態繫結(在執行時),過載屬於靜態繫結。

總結:1、不管那種繼承方式,派生類中都可以訪問基類中的公有和保護成員,基類的私有成員在派生類中存在但不可見(不能訪問)。

2、class預設的繼承方式是private的,而struct預設的繼承方式是public的

繼承體系中需注意的要點:

1、子類的建構函式是合成的,所以初始化子類的建構函式時,必須呼叫父類的建構函式初始化,不能直接初始化父類的成員變數。

2、在子類中operator=時,需要呼叫父類的賦值運算子過載,通過::呼叫。否則會死迴圈(由於子類對父類隱藏,一直在子類中迴圈)

問:類成員函式的 過載、重寫(覆蓋)、重定義(隱藏)的區別是什麼?

過載:在同一作用域,可以有一組相同函式名,但不同引數列表的函式,對應著多個同名函式的實現,即乙個函式名對應著多個函式體,根據呼叫時傳參的不同而選擇呼叫哪個函式體。

重寫(覆蓋):

在子類中重寫父類的虛函式,子類和父類的函式框架必須一致,即函式名、引數型別、個數必須一致。

重定義(隱藏):

子類中出現與父類同名的成員函式,子類與父類的同名函式引數可不同,當父類的指標指向該函式時便實現了對父類函式的隱藏(即使父類該函式的引數型別更符合)。

過載、重寫、重定義的比較:

過載:1、在同一作用域  2、函式名必須相同,引數個數、型別不同  3、virtual關鍵字可有可無

重寫(覆蓋):

1、不同作用域(子類和父類)2、函式名、引數型別、個數一致  3、基類函式必須有virtual關鍵字

重定義(隱藏):

1、不同作用域(子類和父類)2、函式名相同,引數型別、個數可不同 3、virtual關鍵字可有可無4、同名函式基類有virtual時,只要不是重寫,便是隱藏

協變:兩函式返回值不同,但兩函式的返回值是父子類關係

協變是重寫的乙個特例

c 封裝,繼承,多型

一 封裝 封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中 我們稱之為類 被封裝的物件通常被稱為抽象資料型別。物件導向程式設計中一般以類作為資料封裝的基本單位。類將資料和運算元據的方法結合成乙個單位。在設計類時,不希望直接訪問類中的資料,而是希望通過方法來訪問資料。如此...

C 封裝 繼承 多型

物件導向的三個基本特徵 物件導向的三個基本特徵是 封裝 繼承 多型。其中,封裝可以隱藏實現細節,使得 模組化 繼承可以擴充套件已存在的 模組 類 它們的目的都是為了 重用。而多型則是為了實現另乙個目的 介面重用!封裝 什麼是封裝?封裝可以隱藏實現細節,使得 模組化 封裝是把過程和資料報圍起來,對資料...

c 封裝,繼承,多型

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