// 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方法和屬性,在一定程度上破壞了類的封裝性。使用組合的方法如...