面向对象的三个基本特征是:封装、继承、多态
1. 封装
封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。
隐藏具体的内部实现细节,仅向外部提供简单的接口
优点:
- 减少耦合:可以独立地开发、测试、优化、使用、理解和修改
- 减轻维护的负担:可以更容易被程序员理解,并且在调试的时候可以不影响其他模块
2.继承
继承就是在父类的基础上,作出扩展,定义一个子类,而子类跟父类的关系就是is a的关系。
继承实现了 IS-A 关系,例如 Cat 和 Animal 就是一种 IS-A 关系,因此 Cat 可以继承自 Animal,从而获得 Animal 非
private 的属性和方法
子类比父类拥有更丰富的功能,子类中只需定义与父类的不同之处即可。
继承可以扩展已存在的代码。
3. 多态
多态:多态性可以简单地概括为“一个接口,多种方法”
多态类型:
a、编译时多态性:通过模板和重载函数实现(子类实现父类中的同名函数,但是接口不一样称为覆盖(override),或者称为重写)
b、运行时多态性:通过虚函数实现
多态目的:为了接口重用。对于动态多态来说就是不论传递过来的究竟是那个类的对象,函数都能够通过同一个接口调用到适应各自对象的实现方法。
最常见的用法就是声明一个指向基类的指针或者引用,然后利用这个指针或者引用指向任意一个子类对象,调用相应的虚函数,可以根据指向的子类的不同而实现不同的方法。
面向过程:为了解决一个问题,分析出解决这个问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
而面向对象是站在一个抽象的角度去解决问题,把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
https://blog.csdn.net/jerry11112/article/details/79027834