类继承
繼承(Inherit):繼承是指一個對象直接使用另一對象的屬性和方法。
類繼承后方法屬性的變化:
private屬性不能夠被繼承。
使用private繼承,父類的protected和public屬性在子類中變為private;
使用protected繼承,父類的protected和public屬性在子類中變為protected;
使用public繼承,父類的protected和public屬性不發生變化。
如下所示:
public: protected: private:
public繼承 public protected 不可用
protected繼承 protected protected 不可用
private繼承 private private 不可用
?
為了進一步理解三種不同的繼續方式在其成員的可見性方面的區別,下面從三種不同角度進行討論。
對于公有繼續方式:
(1) 基類成員對其對象的可見性:
公有成員可見,其他不可見。這里保護成員同于私有成員。
(2) 基類成員對派生類的可見性:
公有成員和保護成員可見,而私有成員不可見。這里保護成員同于公有成員。
(3) 基類成員對派生類對象的可見性:
公有成員可見,其他成員不可見。
所以,在公有繼續時,派生類的對象可以訪問基類中的公有成員;派生類的成員函數可以訪問基類中的公有成員和保護成員。這里,一定要區分清楚派生類的對象和派生類中的成員函數對基類的訪問是不同的。
?
對于私有繼續方式:
(1) 基類成員對其對象的可見性:
公有成員可見,其他成員不可見。
(2) 基類成員對派生類的可見性:
公有成員和保護成員是可見的,而私有成員是不可見的。
(3) 基類成員對派生類對象的可見性:
所有成員都是不可見的。
所以,在私有繼續時,基類的成員只能由直接派生類訪問,而無法再往下繼續。
?
對于保護繼續方式:
這種繼續方式與私有繼續方式的情況相同。兩者的區別僅在于對派生類的成員而言,對基類成員有不同的可見性。
?
基類與派生類的關系
任何一個類都可以派生出一個新類,派生類也可以再派生出新類,因此,基類和派生類是相對而言的。
基類與派生類之間的關系可以有如下幾種描述:
1. 派生類是基類的具體化
類的層次通常反映了客觀世界中某種真實的模型。在這種情況下,不難看出:基類是對若干個派生類的抽象,而派生類是基類的具體化。基類抽取了它的派生類的公共特征,而派生類通過增加行為將抽象類變為某種有用的類型。
2. 派生類是基類定義的延續
先定義一個抽象基類,該基類中有些操作并未實現。然后定義非抽象的派生類,實現抽象基類中定義的操作。例如,虛函數就屬此類情況。這時,派生類是抽象的基類的實現,即可看成是基類定義的延續。這也是派生類的一種常用方法。
3. 派生類是基類的組合
在多繼續時,一個派生類有多于一個的基類,這時派生類將是所有基類行為的組合。
派生類將其本身與基類區別開來的方法是添加數據成員和成員函數。因此,繼續的機制將使得在創建新類時,只需說明新類與已有類的區別,從而大量原有的程序代碼都可以復用,所以有人稱類是“可復用的軟件構件”。
?
轉自:http://www.cnblogs.com/york-hust/archive/2012/06/01/2530799.html
轉載于:https://www.cnblogs.com/blank031x/p/3870441.html
總結
- 上一篇: 20050708:我还是忍忍吧
- 下一篇: 判断泛型的值是否为default(T)