C++--继承和组合

继承和组合

  1. public继承是一种 is-a 的关系,组合是一种 has-a 的关系;
  2. 一般优先使用对象组合,而不是类继承;
  3. 继承允许根据基类的实现来定义派生类的实现,在继承方式中,基类的内部细节对子类可见。继承一定程度上破坏了基类的封装,基类的改变,对派生类有很大的影响,派生类与基类的依赖关系很强,耦合度很高;
  4. 对象组合是类继承之外的一种复用选择。对象内部是不可见的,组合类之间没有很强的依赖关系,耦合度低,代码维护性好。
//继承  is a
class Car
{
protected:
	string _color = "white";
	string _num = "陕AB5678";
};
class BMW : public Car
{
public:
	void Drive()
	{
		cout << "好开-操控" << endl;
	}
};
class Benz : public Car
{
public:
	void Drive()
	{
		cout << "好坐-舒适" << endl;
	}
};
//组合 has a
class Tire 
{
protected:
	string _brand = "Michelin";
	size_t _size = 17;
};
class Car
{
protected:
	string _color = "white";
	string _num = "陕AB5678";
	Tire _t;
};

你可能感兴趣的:(C++,笔记,c++)