1.定義:繼承是物件導向復用的重要手段,是型別之間的關係建模,共享共有的東西,實現各自本質不同的東西。
三種繼承關係下基類成員在派生類發生的訪問關係變化:
例:
#include#includeusing namespace std;
class person
void display()
protected:
string _name; // 姓名
};
class student : public person
;int main()
總結:
1. 基類的私有成員在派生類中是不能被訪問的,如果一些基類成員不想被基類物件直接訪問,但需要在派生類中能訪問,就定義為保 護成員。可以看出保護成員限定符是因繼承 才出現的。
2. public繼承是乙個介面繼承,保持is-a原則,每個父類可用的成員對子類也可用,因為每個子類物件也都是乙個父類物件。
3. protetced/private繼承是乙個實現繼承,基類的部分成員並未完全成為子類介面的一部分,是 has-a 的關係原則,所以非特殊情 況下不會使用這兩種繼承關係,在絕大多數的 場景下使用的都是公有繼承。
4. 不管是哪種繼承方式,在派生類內部都可以訪問基類的公有成員和保護成員,但是基類的私有成員存在但是在子類中不可見(不能 訪問)。
5. 使用關鍵字class時預設的繼承方式是private,使用struct時預設的繼承方式是public,不過最好顯示的寫出繼承方式。
6. 在實際運用中一般使用都是public繼承,極少場景下才會使用protetced/private繼承.
2. 賦值相容規則
1. 子類物件可以賦值給父類物件(切割/切片)
2. 父類物件不能賦值給子類物件
3. 父類的指標/引用可以指向子類物件
4. 子類的指標/引用不能指向父類物件(可以通過強制型別轉換完成)
class a
;class b :public a
;int main()
;class b :public a
;//隱藏/重定義
int main()
;class b :public a
;class c :public a
;class d :public b, public c
;//物件模型:記憶體當中的分布
繼承和多型
物件導向程式設計時有乙個非常重要的原則 write once only once 編寫一次,且僅編寫一次 如果沒有繼承這種機制我們可能要重複寫很多 下面來看一下繼承 一 繼承 1 子類如果繼承父類必須使用extends這個關鍵字 2 子類呼叫父類的構造方法使用super關鍵字,也可以通過super來...
繼承和多型
物件導向程式設計時有乙個非常重要的原則 write once only once 編寫一次,且僅編寫一次 如果沒有繼承這種機制我們可能要重複寫很多 下面來看一下繼承 一 繼承 1 子類如果繼承父類必須使用extends這個關鍵字 2 子類呼叫父類的構造方法使用super關鍵字,也可以通過super來...
繼承和多型
類還有乙個重要的特性就是繼承,什麼是繼承?它又有什麼作用呢?繼承最主要的目的就是為了擴充套件原類的功能,加強或改進原類所沒有定義的屬性及方法。例如我們有狗這個類,可是狗的種類還是有很多,比如說博美狗,聖伯納,柴犬等等,如果只用狗一種類來定義所有種類狗的屬性及方法,那麼用這個類所產生出來的物件一定會有...