C++--继承和组合

35 篇文章 0 订阅
本文探讨了面向对象设计中的继承和组合两种复用策略。继承体现了is-a关系,但可能导致基类的封装被破坏,耦合度高;而组合体现has-a关系,耦合度低,更具灵活性。在实际开发中,通常建议优先考虑对象组合以提高代码的维护性和稳定性。
摘要由CSDN通过智能技术生成

继承和组合

  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;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值