学科分类
目录
基础

面向对象的基本概念

在介绍如何实现面向对象之前,这里先普及一些面向对象涉及的概念。

1.对象(object)

从一般意义上讲,对象是现实世界中可描述的事物,它可以是有形的也可以是无形的,从一本书到一家图书馆,从单个整数到繁杂的序列等都可以称为对象。对象是构成世界的一个独立单位,它由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一个独立整体。从程序设计者的角度看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。

对象既可以是具体的物理实体的对象,也可以是人为的概念,或者是任何有明确边界和意义的东西,比如一名员工、一家公司、一辆汽车、一个故事等。

2.类(class)

俗话说“物以类聚”,从具体的事物中把共同的特征抽取出来,形成一般的概念称为“归类”,忽略事物的非本质特牲,关注与目标有关的本质特征,找出事物间的共性,抽象出一个概念模型,就是定义一个类。

在面向对象的方法中,类是具有相同属性和行为的一组对象的集合,它提供一个抽象的描述,其内部包括属性和方法两个主要部分,它就像一个模具,可以用它铸造一个个具体的铸件。

3.抽象(abstract)

抽象是抽取特定实例的共同特征,形成概念的过程,例如苹果、香蕉、梨、葡萄等,抽取出它们共同特性就得出“水果”这一类,那么得出水果概念的过程,就是一个抽象的过程。抽象主要是为了使复杂度降低,它强调主要特征,忽略次要特征,以得到较简单的概念,好让人们能控制其过程或以综合的角度来了解许多特定的事态。

4.封装(encapsulation)

封装是面向对象程序设计最重要的特征之一。封装就是隐藏。它将数据和数据处理过程封装成一个整体,以实现独立性很强的模块,避免了外界直接访问对象属性而造成耦合度过高及过度依赖,同时也阻止了外界对对象内部数据的修改而可能引发的不可预知错误。

封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。例如,人们对计算机进行封装,用户只需知道通过鼠标和键盘可以使用计算机,但无需知道计算机内部如何工作。

5.继承(inheritance)

继承描述的是类与类之间的关系,通过继承,新生类可以在无需赘写原有类的情况下,对原有类的功能进行扩展。例如,已有一个汽车类,该类描述了汽车的普通特性和功能,现要定义一个拥有汽车类属性,但还具有其它特性和功能的轿车类,可以直接先让轿车类继承汽车类,再为轿车类单独添加轿车的特性即可。

继承不仅增强了代码复用性,提高了开发效率,也为程序的扩充提供了便利。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是数据组织和分类行之有效的方法,它减低了创建对象、类的工作量。

6.多态( polymorphism)

多态指同一个属性或行为在父类及其各派生类中具有不同的语义,面向对象的多态特性使得开发更科学、更符合人类的思维习惯,能有效地提高软件开发效率,缩短开发周期,提高软件可靠性。

以一个交通概念为例来进行讲解,假如在一个十字路口红灯亮起,那么汽车、飞机这两个对象看到红灯会做出不同的反应,汽车停车,飞机继续飞行,这就是多态性。不同的对象对同一个消息产生不同的行为。

封装、继承、多态是面向对象程序设计的三大特征。它们的简单关系如图1所示。

image-20200616171720815

图1 面向对象程序设计特征

这三大特征适用于所有的面向对象语言。深入了解这些特征,是掌握面向对象程序设计思想的关键。

点击此处
隐藏目录