c++的组合/继承与多态
类与类之间,存在组合关系与继承关系。组合关系是比较简单方便的,能用就用,别滥用继承关系
1.类的组合关系
- 所谓组合关系,就是一个类中包含了其他类。具体的实现方法很简单,将其他类的对象作为当前类的成员使用,那么就构成了组合关系
class Computer //电脑类
{
Memory mMem; //内存类的对象
Disk mDisk; //硬盘类的对象
CPU mCPU; //cpu类的对象
MainBoard mMainBoard; //主板类的对象
public:
Computer()
{
}
};
- 这些对象仅仅就是普通的成员变量罢了,没什么值得注意的
2.类的继承关系
继承,是面向对象中代码复用的重要手段
继承关系的特性
- 所谓继承关系,就是子类继承父类所有的特质(元素),同时可新增父类没有的特质(元素),也可重写继承得到的特质(元素)。继承关系有一些独特的性质:
- 子类重写/新增的成员函数,无法直接访问继承到的成员变量。为了克服这一点,父类中一般不用private权限,而用protected权限。如下面,Dell中的test便可直接访问mv
- 尽管子类在概念上是父类的子集,但是子类所含的特质(元素)是父类所含特质(元素)的超集,所以子类可以直接赋值给父类
class Computer
{
protected:
int mv;
public:
Computer()
{
mv = 100;
}
void change()
{
mv = 100;
}
};
class Dell : public Computer
{
public:
void test() //这个成员函数是子类新增的
{
mv = 123;
}
};
int main()
{
Dell dell;
Computer pc = dell; //可以直接用子类初始化父类
pc = dell;