零基础学Java第2版
上QQ阅读APP看书,第一时间看更新

8.1 对象

什么是对象呢?本节将会详细地讲述对象的概念、用法,以及如何创建它们。对象是一个比较抽象的概念。在这里将会结合实例进行讲述、分析,让读者能够从本质上很好地理解对象。

8.1.1 什么是对象

很多编程爱好者,包括有过很多年编程经验的人,对于对象的概念都是很模糊的,如果将对象的概念与现实生活中的实物相比,就会发现对象其实是很好理解的。

对象就是实际生活中的事物,可以说一切都是对象,在现实生活中时时刻刻都接触到对象这个概念,例如桌子、椅子、电脑、电视机、空调等。这些实物都可以说是对象。

对象有三个主要的特征:

❑对象行为:这个对象能做什么,即可以让这个对象完成什么样的功能,比如自行车可以载大家去想去的地方。

❑对象的状态:当操纵对象的方法时,对象所保持的一种特定的状态,比如可以扭转车头使得自行车转弯、刹车会使车停下来。

❑对象的标识符:可以通过标识符,区别具有相同行为或类似状态的对象,例如自行车的颜色、样式都是对象的标识符。通过它能区分不同的对象。例如红色的自行车、蓝色的自行车等,通过颜色这个标识符,可以区分两种不同自行车对象。代码如下所示,这里仅作演示。

01   class 自行车
02   {
03          int color;-------------------------------对象的标识符
04          int material;----------------------------对象的标识符
05          int type;--------------------------------对象的标识符
06          int a------------------------------------对象的状态属性
07          void ride(){⋯⋯⋯⋯⋯..}------------------对象的行为
08          void control(int a)----------------------对象的状态方法函数
09         {
10               if a=number1
11                     转弯
12               else if a=number2
13                     直行
14               else a=number3
15                     停止
16       }
17   }

从以上例子可以清楚地看出对象到底是什么,下面将学习如何去操作对象。

8.1.2 操作对象

读者初步了解到,对象其实就是现实生活中的事物,现实生活中要经常去使用和操作这些事物,那么如何去操作这些事物(对象)呢?

针对这个问题,提出了一个概念,就是对象句柄。什么是对象句柄?为了能清楚地解释这个概念,先举个例子:使用汤勺去喝汤,汤勺的勺部分是用来盛汤的,汤勺把手部分是让大家能够操作汤勺的工具。对象句柄就相当于前面所说的汤勺把手,而汤勺就像前面所说的对象。

通过上面的例子可以总结出,对象句柄其实是一个指向对象所在内存地址的指针,如果要操作对象,只需要操作对象句柄,正如要想让汤勺能盛汤,只要握住汤勺把手的道理是一样的。

8.1.3 初始化对象

创建一个对象时,总希望它能立即被初始化,即立刻将其与相应的对象进行关联。在Java中,这是一个非常简单的工作。使用关键字“new”来完成对象句柄的命名,用“=”将对象句柄与对象关联。举例:

String str=new String("Hello");

解释与分析:String是Java中用到最多的字符串对象。在这个例子中,先给对象句柄命名,并且声明这个对象句柄的类型是属于什么类型的对象,最后,将“Hello”这个字符串类型对象的内存地址赋给这个对象句柄。于是,对象句柄初始化的工作就算完成了。以后要操纵这个对象,只要操纵这个“str”对象句柄就可以了。

【实例8.1】下面看一个程序段。

01   public class object1
02   {
03         public static void main(String[] args)
04         {
05              object1 m=new object1();
06         }
07   }

【代码说明】以上这个例子中,通过第5行的代码,为“object1”类初始化一个“object1”对象“m”,而这个“m”就是前面提到的对象句柄。在学完本章的其他小节后,就可以通过对象句柄,来访问这个对象的方法函数和属性值。

【运行效果】本例没有输出任何内容。

真正开发的时候,就可以体会到使用对象句柄的优点在什么地方。对象初始化工作是非常重要的,它是从一个类中创造一个对象的过程。

注意

首先将对象句柄的类型声明好,再将“=”作为一个指向,指向由关键字所创建的新对象所存储的内存地址,以后,就可以通过这个对象句柄来操作这个新对象。一般情况下,是将对象句柄看成是新对象的替代物。

虽然对象句柄被看成对象的替代物,但必须将这两个不同的概念区分开来,因为真正要操作的是对象,而对象句柄只不过是一个指向对象所存储的内存地址指针,是一个操作对象的工具。其实对象句柄就好比是C++中的指针,但是在Java中不存在指针这个概念。

操作对象有什么用处呢?其实操作对象就是通过访问对象内的成员,来实现某种功能。那对象里面有些什么成员呢?下一节将更加深入地讲解对象中的成员。