1.继承
继承是面向对象的程序设计中的一个重要的概念,可以通过将问题域中的事物抽象成类完成问题到程序空间的映射,从而简化问题的求解。
- 继承的特点
①继承可以提高代码复用,减少工作量以及增加工作效率。
②面向对象程序设计中的继承和现实中的继承有很大相关性,现实中的继承和逻辑系统中的关系额可以帮助确定面向对象程序设计中的继承关系。
③继承的父类和子类一定要有逻辑关系,比如椭圆和圆的关系就不适合使用继承表示,因为对于圆来说,椭圆的长轴和短轴没有直接的联系,可能就是圆的面积和周长和椭圆优点联系。
- 继承关系
class Vehicle{
public:
int speed;
int friction;
virtual void drive();
virtual void stop();
}
class Bicycle : Vehicle{
public:
string double_tire;
}
class Motorcycle : Vehicle{
public:
string Tank;
}
class Car : Vehicle{
public:
string Four_tire;
}
2.组合
组合也是面向对象中的一种代码重用的方法,这意味着组合类中的某些数据成员是其他已有类的对象。一般来要考虑类之间是is
还是has
的关系,如果是is
的关系就是用继承,如果是整体部分就考虑使用组合
- 组合的特点
①将一个类的对象作为另一个类的成员,被称作组合或包含,执行成员类的构造函数初始化对象成员。
②组合关系强调强整体,如果整体被破坏那么部分类就不能单独存在,这也是和聚合的区别,当整体对象生命周期被销毁时,局部对象也会被销毁。
- 组合关系
class CPU{ //...}
class Memory{ //...}
class Peripheral { //...}
class Computer{
Cpu cpu;
Memory memory;
Peripheral peripheral;
}