background image

第第

第 1

  

章 Java 语言概述

能)。

对象的动作取决于外界给对象的刺激,这就是消息,即消息是对象之间进行通信的

一种数据结构。消息告诉对象要求它完成的功能,程序的执行是靠对象间传递消息来连接
的,即所谓的消息驱动。消息一般由三部分组成,即消息的接收对象名、消息操作名和必
要的参数。消息传送与传统的函数调用的主要差别有以下几点:

函数调用可带或不带参数,但消息至少带一个参数(即接收该消息的对象)。

消息操作名类似于函数名,但他们有本质的不同。函数名代表一段可执行的代码,

而消息名的具体功能选定还取决于接收消息的对象本身。

函数调用是过程式的,而消息传送是说明式的,具体如何做由对象根据收到的

消息自行确定。

1.2.2  封装性、继承性和多态性

1.封装性
所谓封装又称为信息隐蔽,是面向对象的基本特征。封装的目的在于将使用者与设计

者分离,使用者不必知道操作实现的细节,只需用设计者提供的消息来访问对象。比如,
汽车作为一个对象,则汽车的设计者与制造者通过提供一组操作面板让用户使用这辆汽
车,用户不必知道这些面板操作是如何实现的细节,这样就实现了对象的设计者与使用
者的分离。在面向对象中封装可按下面具有三个内涵的方式定义:

1)一个清楚的界面,所有对象的内部软件的范围被限定在这个边界内。
2)一个接口,这个接口描述了该对象与其他对象之间的相互作用。
3)受保护的内部实现,这个实现提供对象的相应的软件功能,实现细节不能在定义

这个对象的类的外面访问。

由于封装使得对象访问局限于被良好定义的并受控制的界面,这样就防止了由于程

序相互依赖而带来的不良影响,这对软件的可靠性设计是很重要的。封装本身即模块性,
把定义模块和实现模块分开这就使得用面向对象技术所开发的软件的维护性、修改性大为
改善,这是软件技术追求的目标之一。

2.继承性
由于类是具体对象的抽象,所以就可以有不同级别的抽象(形成不同级别抽象的过

程称为分类),这样就形成像一棵倒立的树一样的类层次关系。图 1-1 是运输工具的不同
级别抽象的分类树。分类是我们组织知识的常用方式,当我们以这种分层方式对对象进行
分类时,位于分类树顶的对象包括下面的所有对象范畴。当一个对象范畴出现在分类树中时,
它满足在分类树中位于它之上的所有对象范畴的属性,如在图 1-1 中位于客运工具之下的
所有范畴都共享四轮的、自驱动的和设计成运送乘客的公共特性。

由此可见,继承是面向对象语言中的一种重要机制,该机制自动地为一个类提供来

自另一个类的操作和属性,这样程序员只需在新类中定义已有类中没有的属性与(或)
操作来建立新类。假定用结点表示类对象,用连接两结点的无向边表示它们之间的关系,
则可用数据结构中的树型图来表示类层次结构。在树型图中,称子女结点(设为 X 类)是
其父结点(设为 Y 类)的子类或派生类,而父结点 Y 类称为子类 X 的超类或父类或基类。
如在图 1-1 中,航天工具类、航空工具类、陆地工具类和水上工具类均是运输工具类的子类,
而运输工具类是航天工具类、航空工具类、陆地工具类和水上工具类的父类。子类 X 由两部

3

3