C++面向对象程序设计(微课版)
上QQ阅读APP看书,第一时间看更新

1.2 面向对象技术的基本特征

面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述了客观世界中的有关事物。面向对象技术的基本特征包括:抽象性、封装性、继承性和多态性

1.2.1 抽象性

忽略事物中与当前目标无关的非本质特征,抓住事物中与当前目标有关的本质特征。找出系统中事物之间的共性,并把具有共性的事物划为一类。例如,在设计一个学生成绩管理系统时,考察学生李三这个对象时,只考虑他的学号、专业、成绩等,忽略他的身高、体重等信息。但是如果我们设计一个类似于“非诚勿扰”的牵手系统时,考察会员李四这个对象时,就需要考虑他的身高、体重等信息,忽略其他无关因素。

1.2.2 封装性

封装性是把对象的属性和行为组合在一起作为一个独立的单位,同时对外隐藏内部细节。封装有两层含义:一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。对象的属性值(除了公有的属性值)只能由这个对象的行为来读取和修改;二是尽可能隐藏对象的内部细节,对外形成一道屏障,只能通过外部接口实现与外部的联系。

1.2.3 继承性

继承(Inheritance)是一种联结类与类的层次模型,继承性是指特殊类的对象拥有其一般类的属性和行为。继承意味着“自动地拥有”,即特殊类中不必重新定义已在一般类中定义过的属性和行为,它会自动地拥有其一般类的属性与行为。

1.2.4 多态性

多态性(Polymorphism)是指不同的类可以有同名的方法,但它们的具体实现和结果可以各不相同。可以使用相同的方法请求,同一消息为不同的对象接受时可产生完全不同的结果。如图1-4所示,显示了不同类的对象咆哮的方式不同。

50051-00-011-1

图1-4 不同类对象不同的咆哮方式

示例代码如下。

mum.roar();
orang.roar();
wukong.roar();

利用多态性,用户可以发送一个通用的消息,而将所有的实现细节都留给接受消息的对象自行决定。