Java系统化项目开发教程
上QQ阅读APP看书,第一时间看更新

1.2 初识对象、类和实体概念

对象、类与实体是面向对象中的重要概念。对于初学者来说,理解起来比较困难。面向对象的方法类似于人类认识现实世界的思维过程,所以,先从身边事说起,想想我们生活的每一天,都会接触到许多事物,比如:乘公车去上学,为客户提供服务,看到飞着的小区里跑着的小,去银行开个账户⋯⋯,其中划线词都是事物,如何区分它们呢?我们是从这些事物的外观形态活动规律,总结归纳其共同点,逐渐地认识分清它们。比如动物,一般家养的小猫、小狗只是为了增添生活情趣,我们会将其与一般的猫狗区分开,称为宠物;而将在野外自生自灭的那些动物,称为野生动物;另外,根据动物的外貌特征、出行方式,还可以区分哪些是飞禽、走兽。我们来看一下图1-3。

图1-3 动物的归类过程

从图1-3可以看出,这是一个归类过程,即将具有相似特征的事物归为一个类(Class)。为了更好地认识类,我们再画一个分类图(假设有只猫的名字叫小黑),如图1-4所示。

图1-4 归类过程

看到猫的归类过程,我们会发现从波斯到生物类,抽象度越高的类,概括性越强,所指范围也越大,且抽象度高包含抽象度低的类,如哺乳类包括猫科、犬科⋯⋯;猫科包括猫、虎⋯⋯;猫类包括波斯、索马里⋯⋯。进一步,以波斯类为例,我们知道,波斯猫具有头圆且大、长毛、短尾、毛色多为银灰或白、举止文雅、捕鼠高手等特点,其中“头圆且大、长毛、短尾、毛色为银灰或白”是描述猫的状态,而“举止文雅、捕鼠高手”是描述猫的行为。也就是说,类概括了一组相似事物的状态和行为,称状态为属性(Property),行为为方法(Method)。读者可以分析图中其他类,来进一步加深理解。接着,我们来看“小黑”,它是一只能看见摸得着的猫,毛长5厘米、银灰色、喜爱吃巧克力。那么,“小黑”是独一无二的,且有具体的属性(毛长、毛色)和行为(喜爱吃巧克力),我们将这样存在于现实世界中的具体事物称之为对象(Object)。要说明的一点是,这里所说的对象不一定都是看得见的,像上面提到的账户,它只是银行处理系统中的一些数据,但它也是对象。

另外,我们还可以发现类与对象间的联系,类描述的一些属性,如波斯猫毛的长度、颜色只是一个定性或范围,当这些属性定量时,如毛长为5厘米、毛色为银灰的那只叫“小黑”的猫,就是指一个对象了。

思考题:分析自行车的状态、行为,并描述某辆自行车的具体属性和行为。

刚才所讲到的事物如猫、账户、客户、“小黑”⋯⋯,都是现实世界客观存在的,我们称为实体。但它们所描述的内容不同,如果所描述的内容是一个类,如猫、客户,称为实体类,若所描述的内容是现实世界中的一个对象,如“小黑”、一个真实的账户,则称为实体实例。

对于类、对象和实体有了一些感性认识后,再来看一下面向对象中的专业定义。

1)对象:将一组数据和作用于其的一组操作封装而形成的实体。

这里的数据是用于描述对象的状态,操作是指对象自身或外界施加的行为,通过操作将改变对象的状态。举个例子,运动员听到哨音,起跑。对象(运动员)通过自身的行为(起跑),改变了对象(运动员)的状态(静止->跑动)。

2)类:对具有相同或类似性质的一组对象的共同描述。

3)实体:客观存在并可相互区别的事物称之为实体。

我们研究上述概念的目的,实际是为了传递消息,所以,这里不得不提到消息(Message)这个概念。

4)消息:对象之间进行通信的结构。

举个例子,张三(对象)打电话给李四(对象),请他吃饭。消息包括:李四(消息接收对象)和应邀吃饭(接收对象要执行的操作信息)。所以,一条消息将包含消息的接收者和要求接收者完成某项操作。

思考题:你骑自行车,识别其中的对象,分析自行车状态的改变,以及你和自行车之间的消息。