漫谈Java(2-1) - 类和对象

2.1  一切皆对象

现实世界中,所有的事物都是以各种形态存在的。例如,咖啡屋中的桌子、椅子、咖啡杯、空气弥漫的烤咖啡豆的香味、轻缓的音乐、温馨的灯光。整个世界的运作都是由这些事物来实现的。

2.1.1  什么是对象

对象的定义方法方法有很多种。我们这里选取一个比较容易理解的定义。按照百度百科的定义,对象是指行动或思考时作为目标的事物。例如,当我们走进咖啡屋,所见到的每一样事物都可以看做对象:每个咖啡杯都是一个对象,每个服务员都是一个对象;每一张桌子也是一个独立的对象,如图2-1所示。

 

漫谈Java(2-1) - 类和对象

图2-1  咖啡屋的布景

除了这些看得见、摸得着的东西,还有一些肉眼看不到的事物,也是对象。例如,咖啡屋的员工守则,虽然它有时也以文字的形式体现出来,但是却存在于每位员工的意识中。即使没有文字形式体现,它也是一个对象。

总之,万事万物都是对象。

2.1.2  对象的特点

虽然对象有很多,但是对象具备一些共有的特征。

1.对象的互异性

对象具有互异性。现实世界中,无论两个事物如何相似,都是不同的两个个体。两个咖啡杯,即使是相同的工艺、同一个模型制造、人眼也无法分辨二者的区别,但终归,它们是两个不同的个体。在图2-2中,有四个咖啡杯,便可以看做四个不同的对象。即使其中两个的外型非常相似,但谁也不能代替谁,这就是对象的互异性。

 

漫谈Java(2-1) - 类和对象

图2-2  咖啡屋中的咖啡杯

2.对象的存在性

对象具有存在性。现实世界中,事物的存在为我们所感知,往往由于它们占有一定的空间。例如,咖啡杯有一定的体积,在咖啡屋中便占有一定的位置和空间。即便是一些看不着,摸不到的东西,也是以某种形式存在的。例如,轻缓的音乐和温柔的灯光。

3.对象的销毁

事物总有生老病死或者兴盛衰亡,当事物衰亡,现实世界将不在为该事物保留空间。一个咖啡杯摔碎了,便不再有使用的价值。那么,咖啡屋会将该咖啡杯丢弃。从此,再也不能获得该咖啡杯的信息,也不能利用该咖啡杯做任何事情。

 

2.1.3  相近的对象抽象出类

抽象是指将事物的一个或多个特性抽取出来,在只关注这些特性的基础上,对事物进行概括的行为。

  • 自然界中,有无数有生命的生物,每个个体都有不同的特性。但是,我们只关注能否将无机物(碳元素、水等)合成为有机物这一特性,那么所有的生物就可以抽象为两类——植物(能合成有机物)和动物(不能合成有机物)。

  • 在所有的动物中,我们又只关注能否直立行走和独立思考的能力这两项特性,那么,又可以将动物抽象为人类和一般动物。

  • 对于人类的所有个体,我们又只关注性别这个特性,那么,就又可以抽象为男人和女人。

可见,抽象是抽取所关注个体的某个或某些特性,然后将具有相同特性的个体归为一类的行为。我们日常生活中所说的“物以类聚,人以群分”也是一个抽象的过程——将具有某些相同特性的对象视为一类,而随着作为划分标准的属性的范围的不同,所划分出的类也是不同的。一般说来,所关注的特性越多,所能囊括的个体就越少,而抽象出的类也越具体。这就是我们在现实生活中根据具体对象抽象出类的思维过程。

 

更多技术交流文章,请关注微信公众号【时代码农】

漫谈Java(2-1) - 类和对象