面向对象的程序设计方法则按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反应来完成一定的任务。
第6章对象、类、包和接口
在前面几章中,我们对Java的简单数据类型、数组、运算符和表达式以及流控制方法作了详细的介绍。从现在开始,我们要深入到面向对象的编程技术,深入到Java最吸引人的地方。本章中,我们首先讲述面向对象程序设计的基本概念及特点,然后讨论Java中的类、对象、包和接口,最后进行小结,给出一个完整的Java文件的格式。
6.1面向对象的程序设计
面向过程的程序设计方法从解决问题的每一个步骤入手,它适合于解决比较小的简单问题。C语言采用面向过程的程序设计模型,但是由于C本身几乎没有支持代码重用的语言结构,并且缺乏统一的接口,使得当程序的规模达到一定程度时,程序员很难控制其复杂性。
面向对象的程序设计方法则按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反应来完成一定的任务。
6.1.1对象、类和消息
一个对象就是变量和相关的方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为,下图表示了一个对象的特征:
一个对象的变量构成这个对象的核心,包围在它外面的方法使这个对象和其它对象分离开来。例如:我们可以把汽车抽象为一个对象,用变量来表示它当前的状态,如速度、油量、型号、所处的位置等,它的行为则可以有加速、刹车、换挡等。我们操纵汽车时,不用去考虑汽车内部各个零件如何运作的细节,而只需根据汽车可能的行为使用相应的方法即可。实际上,面向对象的程序设计实现了对对象的封装,使我们不必关心对象的行为是如何实现的这样一些细节。通过对对象的封装,实现了模块化和信息隐藏,有利于程序的可移植性和安全性,同时也利于对复杂对象的管理。
对象之间必须要进行交互来实现复杂的行为。例如,要使汽车加速,必须发给它一个消息,告诉它进行何种动作(这里是加速)以及实现这种动作所需的参数(这里是需要达到的速度等)。对象A对象B间的消息传递过程。
一个消息包含三个方面的内容:
●消息的接收者
●接收对象应采用的方法
●方法所需要的参数。
同时,接收消息的对象在执行相应的方法后,可能会给发送消息的对象返回一些信息(如上例中,汽车的仪表上会出现已经达到的速度等)。
由于任何一个对象的所有行为都可以用方法来描述,通过消息机制就可以完全实现对象之间的交互,同时,处于不同处理过程甚至不同主机的对象间也可以通过消息实现交互。