C 中的繼承

2021-09-02 13:23:14 字數 1133 閱讀 3455

c++的「繼承」特性可以提高程式的可復用性。正因為「繼承」太有用、太容易用,才要防止亂用「繼承」。我們應當給「繼承」立一些使用規則。

若在邏輯上b是a的「一種」(a kind of ),則允許b繼承a的功能和屬性。例如男人(man)是人(human)的一種,男孩(boy)是男人的一種。那麼類man可以從類human派生,類boy可以從類man派生。

繼承的概念在程式世界與現實世界並不完全相同。例如從生物學角度講,鴕鳥(ostrich)是鳥(bird)的一種,按理說類ostrich應該可以從類bird派生。但是鴕鳥不能飛,那麼ostrich::fly是什麼東西。從數學角度講,圓(circle)是一種特殊的橢圓(ellipse),按理說類circle應該可以從類ellipse派生。但是橢圓有長軸和短軸,如果圓繼承了橢圓的長軸和短軸,豈非畫蛇添足?所以更加嚴格的繼承規則應當是:若在邏輯上b是a的「一種」,並且a的所有功能和屬性對b而言都有意義,則允許b繼承a的功能和屬性。

若在邏輯上a是b的「一部分」(a part of),則不允許b從a派生,而是要用a和其它東西組合出b。例如眼(eye)、鼻(nose)、口(mouth)、耳(ear)是頭(head)的一部分,所以類head應該由類eye、nose、mouth、ear組合而成,不是派生而成。

例如:

class eye

;class nose

;class mouth

;class ear

;// 正確的設計,雖然**冗長。

class head

void smell(void)

void eat(void)

void listen(void)

private:

eye m_eye;

nose m_nose;

mouth m_mouth;

ear m_ear;

};如果允許head從eye、nose、mouth、ear派生而成,那麼head將自動具有look、 smell、eat、listen這些功能。但是這種設計方法卻是不對的。

// 功能正確並且**簡潔,但是設計方法不對。

class head : public eye, public nose, public mouth, public ear

;

C 中的繼承

一 繼承 什麼是繼承 繼承是允許重用現有類去建立新類的過程。分類的原則是乙個類派生出來的子類具有這個類的所有非私有的屬性。1 繼承c 中的類 c 不支援多重繼承,c 類始終繼承自乙個基類 如果未在宣告中指定乙個基類,則繼承自 system.object 派生類繼承基類的語法如下 using syst...

C 中的繼承

繼承,資料抽象和動態繫結是物件導向程式設計的核心思想。使用繼承,可以定義相似的型別並對其相似關係進行建模。通過繼承聯絡在一起的類構成一種層次關係,通常在層次關係的根部有乙個基類,其他類則直接或間接地從基類繼承而來,這些繼承得到的類稱為派生類。下面就讓我們一起來 繼承中的一些常見問題。1.繼承方式cl...

C 中的繼承

繼承是c 中的三大特性之一。繼承機制是物件導向程式設計使 可以復用的最重要的手段,它允許程式設計師在保持原有類特性的基礎上進行擴充套件,增加功能。這樣產生新的類,叫做派生類。繼承定義的格式 class deriveclassname 派生類名 asecc label 繼承型別 baseclassna...