繼承和組合的分析

2021-06-20 18:49:40 字數 737 閱讀 4316

// test.cpp : 定義控制台應用程式的入口點。

/*總結:繼承就是隱含的將父類在派生類中再次定義,很像組合。新增保護、私有許可權

**無外乎為父類定義的「成員」新增了乙個保護殼,相當於該父類成了私有或保護「成員」,

**但組合無法修改類內部結構,但繼承可以重寫父類的方法,嚴格上說繼承只是介面的復用*/

#include "stdafx.h"

#include using namespace std;

class x

void seti(int a)

int geti()

};class y : protected x //保護繼承,相當於定義了乙個保護x成員

; void seti(int a)

//int geti() //由於x的i是私有的只有自己能用

int geta() //由於x的a是保護的自己和孩子能用

};class z : private x //私有繼承,相當於定義了乙個私有x成員

; void seti(int a)

//int geti() //由於x的i是私有的只有自己能用

int geta() //由於x的i是保護的孩子也能用

};class e //組合

;private:

x x;

};int _tmain(int argc, _tchar* argv)

組合繼承和寄生式組合繼承

組合繼承綜合了原型鏈和盜用建構函式,解決了原型內引用值共享的問題,以及子類在例項化時不能給父類建構函式傳參的問題。缺點 呼叫了兩次父類建構函式影響效率,而且子類的原型物件上也擁有了不必要也用不上的屬性,即父類建構函式的例項屬性。這樣的話子類的例項物件如果刪除某個屬性,這個屬性仍然可以訪問到,因為它可...

繼承和組合

繼承是一種白箱復用,父類的內部細節對子類可見。物件組合彼此不知道對方內部細節,成為黑箱復用。繼承的優缺點 1 子類可以直接重定義父類的操作。2 編譯時刻決定了,無法在執行期間更改。3 子類要知道父類的實現細節,這樣就部分破壞了封裝性。子類和父類依賴過於緊密,父類的某些變化必然導致子類的變化。開發過程...

繼承和組合

1.相同點 二者都是實現類重用的重要方式。2.不同點 繼承會破壞封裝性。例 class a public void breath class b extends a class c extends a 則b,c物件則能夠訪問a中的public方法和屬性,在一定程度上破壞了類的封裝性。使用組合的方法如...