面向对象:先抽象问题整体,在具体逻辑细节。
面向过程:先具体逻辑细节,再抽象问题整体。
面向对象的三大特性:封装、继承、多态
类的封装 –> 一个类如何描述?
类的继承 –> 多个类型之间存在继承关系,如何继承?
类的多态 –> 类的对象有多种形态?
C++认为万事万物皆为对象,对象上有其属性与行为。
例如:
人可以作为对象,属性有姓名、年龄、身高、体重… 行为有走、跑、跳、唱歌、跳舞..
车可以作为对象,属性有轮胎,方向盘,车灯… 行为载人、播音乐、放空调…
具有相同性质的对象,我们可以抽象成为类,人属性人类,车属性车类。
类 —-> 对象
人类 张三
车类 雷克萨斯
学生类 李四
《封装性》:数据和代码捆绑在一起,避免外界干扰和不确定性访问。封装可以使得代码模块化。
优点:
确保用户代码不会无意间破坏封装对象的状态
被封装的类的具体实现细节可以随时改变,而无须调整用户级别的代码
《继承性》:让某种类型对象获得另一个类型对象的属性和方法。继承可以扩展已存在的代码
《多态性》:同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为(重载实现编译时多态,虚函数实现运行时多态)。多态的目的则是为了接口重用
静态多态: 静态多态是在程序《编译阶段》已经确定将要执行的状态。 (函数重载,模板)
动态多态:动态多态是在程序《运行阶段》才能确定将要执行的状态。 (虚函数覆盖)
简单的理解:面向对象就是把所有代码写入到类中