繼承是物件導向軟體技術當中的乙個概念,與多型、封裝共為物件導向的三個基本特徵。繼承可以使得子類具有父類的屬性和方法或者重新定義、追加屬性和方法等。
被繼承的類稱為基類或者是父類;繼承的類被稱為子類或者是派生類。
繼承方式分為三類:公有繼承、保護繼承、私有繼承。三類繼承的不同之處,是改變繼承成員資料的訪問許可權
public
protected
private
公有繼承(public)
public
protected
不可見保護繼承(protected)
protected
protected
不可見私有繼承(private)
private
private
不可見 1.父類不能給子類賦值,子類可以給父類賦值。因為子模擬父類空間大,能夠填充滿父類的空間。
2.父類指標可以指向子類物件,子類指標不能指向父類物件。因為子類指標指向的空間比父類大,有一些額外的值無法預料。
3.父類和子類可以出現同名的變數,但二者作用域不同
class
parent
;class
child
:public parent
;
4.靜態變數整個家族都共用
1.多繼承會出現兩個不明確的變數,解決方法:虛繼承,使得最終繼承只有乙個確定的變數。
如圖:
家具類具有成員資料m,而床類和沙發類同時繼承家具類,因此二者都有資料成員m;而此時沙發床通過多繼承,繼承床類和沙發類,則m拷貝了兩份,因此沙發床在呼叫m的時候具有二義性,無法確定到底是繼承誰的m。
解決方法:床類和沙發類在繼承家具類的時候採用虛繼承的方法,採用虛繼承以後,沙發床在繼承二者時,發現二者繼承了同乙份變數便只會拷貝一次。
class
bed:
virtual
public furniture
class
sofa
:virtual
public furniture
class
sofabed
:public bed,
public sofa
繼承中的一些問題
1.本質 達到 復用,子類可以復用父類的方法和屬性 2.繼承關係中構造方法的呼叫關係 子類的任何乙個構造方法,總是會呼叫父類中的某乙個構造方法 預設情況下,呼叫父類無參構造方法 可以使用super關鍵字,在子類構造方法中的第一行呼叫 父類指定的構造方法 3.方法覆蓋 重寫 覆蓋了父類的方法 要求 同...
C 一些問題
1 if else語句和switch case語句的效率分析對比 switch效率高。switch的效率與分支數無關,當只有分支比較少的時候,if效率比switch高,因為switch有跳轉表。分支比較多,那當然是switch 根據大量的實際程式測試 不考慮不同的編譯器優化程度差異,假設都是最好的優...
關於面試的一些問題
面試過程中,面試官會向應聘者發問,而應聘者的回答將成為面試官考慮是否接受他的重要依據。對應聘者而言,了解這些問題背後的 貓膩 至關重要。本文對面試中經常出現的一些典型問題進行了整理,並給出相應的回答思路和參 讀者無需過分關注分析的細節,關鍵是要從這些分析中 悟 出面試的規律及回答問題的思維方式,達到...