CPP学习之——面向对象程序语言的主要特征(6.2)

一 概述

接下来我们将进一步了解面向对象语言,我们用它四个最主要的特征来展示一下它与面向过程的不同,那就是:

  • 抽象
  • 封装
  • 继承
  • 多态

二 抽象

  • 首先我们来说一下抽象,面向对象思想要求程序员将程序的每一个部分都看作一个抽象的对象,即程序由一组抽象的对象组成的,更复杂点,这些对象根据他们相同的特征而又进一步组成了一个类。
  • 打个比方:张明是一个人,我们把他看作一个对象,李四也是一个人,我们也把他看做一个对象,还有王五、赵钱、孙李等等,他们都是一个个具体的对象,但是我们可以发现他们都具备几个共有的特征,那就是能够直立行走和会使用工具。所以我们就可以把他们归纳在一起,并抽象地看做一个类——人类。

三 封装

  • 早期的软件由于数据和程序混在一起,导致程序可读性很差,而且修改起来也很困难。很多数据都混在一起,而这些数据又被多个模块相互调用,因此某个模块在改动某个数据的时候常常会对整个程序产生无法预料的错误。
  • 面向对象针对这个问题提出了数据封装,它将每个数据都封装在各自的类中,又设置了多种访问权限,别的类可以在允许的情况下访问该类中的数据,不允许的情况下则无法访问该数据,从而避免了非法操作和出错的可能性。

四 继承

  • 正如前面所说,我们在发明一个新式发动机的时候,不想重新制作一辆汽车,因此继承这个概念就应运而生了,我们可以将该车定义为一个类,然后再声明一个类,将该车的所有成员都继承过来,其中,自然包括发动机、然后再改造这个发动机,这样一辆新车就生产出来了。

五 多态

5.1 现象描述

作为一名足球运动员,他在射门以后可能会产生多种结果:

  1. 球射在门框上
  2. 球射到了观众席上
  3. 球打中了守门员的头
  4. 球被守门员接住了
  5. 球进了

5.2 多态描述

  • 我们把这种不同的对象(不同的足球运动员),调用相同名称的函数(射门)却导致不同的行为或者结果的现象称为多态性。
  • 这在编程中经常使用,比如说你设计个拳击游戏,那么你定义的多个角色在打出去一拳的时候通常会有多种行为反馈,一拳打空,一拳打到对方,一拳打在裁判的牙上,把牙齿打飞