簡介
“繼承”是面向對象軟體技術當中的一個概念。如果一個類A繼承自另一個類B,就把這個A稱為"B的子類",而把B稱為"A的父類"。繼承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的代碼。在令子類繼承父類的同時,可以重新定義某些屬性,並重寫某些方法,即覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。另外,為子類追加新的屬性和方法也是常見的做法。
有些程式語言支持多重繼承,即一個子類可以同時有多個父類,比如C++程式語言;而在有些程式語言中,一個子類只能繼承自一個父類,比如Java程式語言,這時可以利用接口來實現與多重繼承相似的效果。
在c++語言中,一個派生類可以從一個基類派生,也可以從多個基類派生。從一個基類派生的繼承稱為單繼承;從多個基類派生的繼承稱為多繼承。
派生類的定義格式
單繼承的定義格式
class <派生類名>:<繼承方式><基類名>
{
<派生類新定義成員>
};
其中,<派生類名>是新定義的一個類的名字,它是從<基類名>中派生的,並且按指定的<繼承方式>派生的。<繼承方式>常使用如下三種關鍵字給予表示:
public 表示公有基類;
private 表示私有基類;
protected 表示保護基類;
多繼承的定義格式
如下:
class <派生類名>:<繼承方式1><基類名1>,<繼承方式2><基類名2>,…
{
<派生類新定義成員>
};
可見,多繼承與單繼承的區別從定義格式上看,主要是多繼承的基類多於一個。
派生類的三種繼承方式
公有繼承(public)、私有繼承(private)、保護繼承(protected)是常用的三種繼承方式。
1. 公有繼承(public)
公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的。
2. 私有繼承(private)
私有繼承的特點是基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類所訪問。
3. 保護繼承(protected)
保護繼承的特點是基類的所有公有成員和保護成員都成為派生類的保護成員,並且只能被它的派生類成員函式或友元訪問,基類的私有成員仍然是私有的。