一 不同的繼承方式會改變繼承成員的訪問屬性
public 修飾的成員變數、方法 在類的內部和外部都可以使用。
protected 修飾的成員變數、方法在類的內部使用,在繼承的子類中使用,類的外部不能使用。(是為了在家族中使用,為了得到繼承!)
private 修飾的成員變數、方法 只能在類的內部使用,不能在類的外部使用
1)C++中的繼承方式會影響子類的對外訪問屬性
public繼承:父類成員在子類中保持原有存取層級
private繼承:父類成員在子類中變為private成員
protected繼承:父類中public成員會變成protected
父類中protected成員仍然為protected
父類中private成員仍然為private
2)private成員在子類中依然存在,但是卻無法訪問到。不論種方式繼承基類,衍生類別都不能直接使用基類的私人成員。
3)C++中子類對外訪問屬性工作表
父類成員存取層級
繼承方式
public(繼承方式) proteced(繼承方式) private(繼承方式) public public proteced private proteced proteced proteced private private private private Private
三看原則:
C++中的繼承方式(public、private、protected)會影響子類的對外訪問屬性
判斷某一句話,能否被訪問
1)看調用語句,這句話寫在子類的內部、外部
2)看子類如何從父類繼承(public、private、protected)
3)看父類中的存取層級(public、private、protected)
衍生類別類成員存取層級設定的原則
思考:如何恰當的使用public,protected和private為成員聲明存取層級?
1、需要被外界訪問的成員直接設定為public
2、只能在當前類中訪問的成員設定為private
3、只能在當前類和子類中訪問的成員設定為protected,protected成員的存取權限介於public和private之間。
二 類型相容性原則
類型相容規則是指在需要基類對象的任何地方,都可以使用公有衍生類別的對象來替代。通過公有繼承,衍生類別得到了基類中除建構函式、解構函式之外的所有成員。這樣,公有衍生類別實際就具備了基類的所有功能,凡是基類能解決的問題,公有衍生類別都可以解決。類型相容規則中所指的替代包括以下情況:
子類對象可以當作父類對象使用
子類對象可以直接賦值給父類對象
子類對象可以直接初始化父類對象
父類指標可以直接指向子類對象
父類引用可以直接引用子類對象
在替代之後,衍生類別對象就可以作為基類的對象使用,但是只能使用從基類繼承的成員。
類型相容規則是多態性的重要基礎之一。
第一層含義:
1-1 基類指標(引用)指向子類對象
Parent *p = Null;p = &c1;p->printp();1-2 指標做函數參數howToPrint(&p1);howToprint(&c1);1-3引用做函數參數howToprint2(p1);howToprint2(c1);
第二層含義
可以讓父類對象,初始化子類對象
Parent p3 = c1;
三 繼承中的物件模型
問題:如何初始化父類成員?父類與子類的建構函式有什麼關係
在子類物件建構時,需要調用父類建構函式對其繼承得來的成員進行初始化
在子類對象析構時,需要調用父類解構函式對其繼承得來的成員進行清理
繼承中的構造析構調用原則(初始化的時候從上而下,先有爹再有兒子)
1、子類對象在建立時會首先調用父類的建構函式
2、父類建構函式執行結束後,執行子類的建構函式
3、當父類的建構函式有參數時,需要在子類的初始化列表中顯示調用
4、解構函式調用的先後順序與建構函式相反
以上就是C++複習要點總結之八——繼承一的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!