C++ 继承
继承是 C++ 面向对象编程中一个非常重要的概念,继承允许我们依据一个类来定义另一个类。也就是说,当 创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这使得创建和维护一个应用程序变得更容易,也达到了重用代码功能和提高执行效率的效果。
继承是面向对象的三大特征之一(另外两个是封装和多态),继承代表了 "is a" 关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是动物,等等。
继承的优缺点
优点:
- 提高代码的重用性,减少创建类的工作量,每个子类都拥有父类的方法和属性。
- 子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞” 是说子拥有父母的 “种”,“世界上没有两片完全相同的叶子” 是指明子与父母的不同。
- 提高代码的可扩展性,实现父类的方法就可以 “为所欲为”了,很多开源框架的扩展接口都是通过继承父类来完成的。
- 提高产品或项目的开放性。
缺点:
- 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法。
- 降低代码的灵活性。子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束。
- 增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来非常糟糕的结果 —— 大段的代码需要重构。