继承和组合
继承和组合的概念
继承的概念
子类继承父类可以拥有父类的属性和方法,或者重新定义,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能
组合
组合就是将没有关联的事物都组合起来,将其他类当成成员来使用。
例子
class Computer
{
Memory mMem;
Disk mdisk;
CPU mcpu;
MainBoard mmainboard;
public:
Computer()
{
cout << "Computer()" << endl;
}
~Computer()
{
cout << "~Computer()" << endl;
}
};
输入 computer c: 就会自动调用Memory Disk CPU MainBoard 等类的基类;
何时继承,何时组合
继承的优缺点:
1.父类的内部细节子类时可见的,如果修改了父类,所有子类可能都要修改。
2.子类从父类继承的方法实在编译的时候就确定下来了,所以无法在运行期间改变父类的方法行为。
3.继承打破了封装,子类能够访问到父类的细节,子类缺乏独立性,影响子类的可维护性。
组合的优缺点
1.不破坏封装性,既有交互又相对独立。
2.具有较好的可扩展性。
3.支持动态组合