三,繼承和多態
· 繼承是定義新類的一種機制,使用這種機制創建新類時只需要聲明新類和已創建類之間的差別
· 對應一個繼承關系,創建的新類稱為子類,被繼承的類稱為父類或基類。子類可以使用父類定義的屬性和方法,也可以自定義新的屬性和方法。
·? 父類的特征不會受到子類的影響
· 多態性是指在類的對象在接受同樣的消息時,所做出的響應不同。
·? 因為“接受同樣的消息”,所以這些對象將調用名稱相同的成員函數;
·? “所做出的響應不同”指函數實現的功能不同。
例如。當我軍向未知部隊發出信息,友軍將回答接頭暗號,而敵軍回答錯誤信息。同樣是對信息的響應,由于反映對象不同,響應方法的內容也不同。
繼承
派生類的定義格式為:
class 派生類:繼承方式 基類1,.... ,繼承方式 基類n
{
?????? 派生類增加的成員聲明;
}
繼承有三種方式:即公有繼承,私有繼承,保護繼承
不同的繼承方式下,派生類對象對基類成員訪問控制權限不同
公有繼承方式(public方式)
創建的派生類對基類成員訪問權限如下:
基類公有成員轉化為派生類的公有成員,派生類自身的成員函數可直接訪問從基類繼承的公有成員。
基類保護成員轉化為派生類的保護成員,派生類自身的成員函數可以直接訪問從基類繼承的保護成員。
基類的私有成員成為派生類中更加封閉的私有成員,即使派生類的方法也無法直接訪問。派生類的函數必須通過基類公有成員或保護成員函數間接訪問從基類繼承的私有成員。
在派生類之外,可以通過派生類對象直接訪問從基類繼承的公有成員。
公有繼承示例:
派生類--經聲明,就繼承了基類除構造函數和析構函數以外的所有成員,實現了代碼重用。
派生類在繼承基類成員的基礎上,一般都會有所變化。這些變化主要體現在兩個方面:
(1)派生類對基類的擴充
增加新的成員是派生類對基類的擴充方式。這里派生類Employee繼承Person類,并增加了數據成員m_ strDept, 顯然是擴充了基類的內容。
(2)派生類對基類成員的改造
主要指派生類可以對基類成員函數進行重定義。
派生類繼承了父類的私有成員,但是即使是派生類自身的成員函數也無法直接訪問這種私有成員。
派生類必須通過基類公有或保護方法間接訪問了繼承自基類私有成員。