基類&派生類定義及其基本定義
當建立乙個新的類時,可以指定它繼承已有的類的成員。這兩個類分別被稱為基類,派生類。
繼承,就是將基類中public和protected中的成員,全部或分別,繼承到派生類中的private、protected、public中,單個或多個部分中
派生類可以從乙個或多個基類繼承資料和函式,定義的形式如下
class
namea
:private nameb//繼承單一基類的部分
class
namea
:private nameb,
private namec//繼承不同基類
其中訪問修飾符private還可以是訪問修飾符public,protected
注意:派生類並非繼承全部成員,以下情況例外
訪問控制和繼承
需要注意的是:派生類可以訪問基類中所有的非私有成員。因此基類成員如果不想被派生類的成員函式訪問,則應在基類中宣告為 private
訪問public
protected
private
同乙個類
yesyes
yes派生類
yesyes
no外部的類
yesno
no繼承型別
當乙個類派生自基類,該基類可以被繼承為 public、protected 或 private 幾種型別
不同型別的繼承遵循以下的規則,即基類成員在派生類中的位置
公有繼承
派生類公有成員
保護成員
私有成員
基類公有成員
保護成員
無保護繼承
派生類公有成員
保護成員
私有成員基類無
公有和保護成員
無私有繼承
派生類公有成員
保護成員
私有成員基類無
無公有和保護成員
#include
using
namespace std;
// 基類 shape
class
shape
void
setheight
(int h)
protected
:int width;
int height;};
// 基類 paintcost
class
paintcost};
// 派生類
class
rectangle
:public shape,
public paintcost};
intmain
(void
)
當類之間存在層次結構,並且是通過繼承關聯時,就存在多型。
多型就是將子類型別的指標賦值給父類型別的指標,根據呼叫函式的物件的型別來執行不同的函式。
在實現多型的時候可以用到虛函式virtual
可以將基類a比作父親,而派生類b,c比作孩子。當b,c繼承了父親a時,在某相同的基因片段(函式名)可能部分基因有所不同(函式的內容),這時候就體現了多型性。
下面是一段**示例
classa}
;classb:
public a};
intmain
(int argc,
char
*ar**)
輸出的結果為this is b.而當去掉virtual 後輸出的是this is a.
基類的函式取決於子類的函式,類似函式指標呼叫,這樣就能通過乙個介面實現多個功能
封裝是物件導向程式設計中的把資料和運算元據的函式繫結在一起的乙個概念,這樣能避免受到外界的干擾和誤用
c++ 通過建立類來支援封裝,在使用類的時候應該用到了這一特性
資料封裝的同時又會伴隨著資料抽象,對外公開類中的函式而隱藏資料
下面舉個例子
class
shape
void
setheight
(int h)
protected
:int width;
int height;
};
在該**中,shape類向外界提供了setwidth和setheight兩個方法,但是隱藏了widht和height兩個資料
對外提供了介面,就像乙個機器,你只需要知道怎麼用,但卻不必知道內部怎麼運作。你只看到機器的外表,內部卻有很多看不到的部件
總而言之呢三個特性都是基於類與物件的,前者是基礎,而這三個特性只是延申*,應當著重看基礎部分。
封裝和多型都好抽象啊…
部分例項來自
物件導向 封裝性 繼承性 多型性總結
二 繼承性 三 多型性 封裝性就是將物件內部的複雜性隱藏起來,只是對外部公開簡單的介面,便於外界呼叫,從而提高系統的可擴充套件性 可維護性。通俗的說,就是把該隱藏的隱藏起來,該暴露的暴露出來。將類的屬性設為私有的 private 並提供set或者get方法。此時,針對屬性就體現了封裝性。不對外暴露的...
C 的封裝性 繼承性和多型性概念
封裝 encapsulation 封裝就是將抽象得到的資料和行為 或功能 相結合,形成乙個有機的整體,也就是將資料與運算元據的源 進行有機的結合,形成 類 其中資料和函式都是類的成員。封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是要通過 外部介面,一特定的訪問許可權來使用...
C 多型性和繼承性
這篇文章是6年前的,從自己的qq 632846506 日誌中移過來的。前段時間有人突然問我c 多型性的理論知識,一下子把我問蒙了,用c 近十年,讓我一下子回答多型性的理論。我答不上來,只是簡單的回答了下 多型性主要用在函式介面上,主要是虛函式和純虛函式 的使用,基類中的函式可以在不同子類中有不同的實...