且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Android游戏开发详解》一2.12 设置和访问对象的状态

更新时间:2022-10-12 12:14:13

本节书摘来异步社区《Android游戏开发详解》一书中的第2章,第2.12节,译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.12 设置和访问对象的状态

Android游戏开发详解
现在,我们可以访问一个Phone对象了。myPhone表示使用Phone类(class)创建的一个单个的Phone对象(object)。它是一个独立的实体,独立于我们将来可能使用蓝图(Phone类)创建的任何其他Phone对象。我们使用实例(instance)这个术语来描述这种现象。

为了更加具体地说明,让我们考虑一下,在工厂中批量生产智能手机的时候会发生什么情况。我们使用相同的蓝图来生产数以千计的设备,而且它们都是彼此独立的。它们可以有自己的属性和行为,这意味着,关闭一个设备不会影响到使用相同的蓝图生产的其他设备。与此非常相似,由单个的类而创建的每一个对象,都是该类的一个独立的实例(instance),并且接受各个变量的自己的副本,来描述对象的状态。这些变量叫作实例变量(instance variable)。

我们现在可以开始修改myPhone的状态并且调用其行为了。让我们先来为单个的Phone对象的状态指定一些初始值,如程序清单2.11所示(从第6行到第9行)。

程序清单2.11 World.java——更新后的版本

01 public class World {
02    
03    public static void main(String[] args) {
04        System.out.println("Hello, world!");
05        Phone myPhone = new Phone();
06        myPhone.poweredOn = true;
07        myPhone.playingMusic = false;
08        myPhone.phoneManufacturer = "Samsung";
09        myPhone.androidVersionNumber = 4.4;
10    }
11 }

注意一下,我们是如何访问属于Phone对象的实例变量的。要获取一个对象的特定的变量,使用点运算符。点运算符用来表示所有权。例如,myPhone.poweredOn表示属于myPhone对象的poweredOn变量。

现在已经为Phone对象的变量指定了一些初始值,myPhone是描述性数据的一个集合。如果某人访问了我们的myPhone对象,他通过打印myPhone的当前状态的值,就能够完全知道其状态了,如程序清单2.11所示(从第11行到第15行)。

程序清单2.12 World.java—更新后的版本

01 public class World {
02    
03    public static void main(String[] args) {
04        System.out.println("Hello, world!");
05        Phone myPhone = new Phone();
06        myPhone.poweredOn = true;
07        myPhone.playingMusic = false;
08        myPhone.phoneManufacturer = "Samsung";
09        myPhone.androidVersionNumber = 4.4;
10    
11        System.out.println("myPhone's state:");
12        System.out.println("Powered on: " + myPhone.poweredOn);
13        System.out.println("Playing music: " + myPhone.playingMusic);
14        System.out.println("Manufacturer: " + myPhone.phoneManufacturer);
15        System.out.println("Version: " + myPhone.androidVersionNumber);
16    }
17 }

再次运行该程序。应该会看到如下所示的输出。

Hello, world!
myPhone's state:
Powered on: true
Playing music: false
Manufacturer: Samsung
Version: 4.4

正如你所看到的,我们能够将有意义的数据组织到一个集合中,即一个Phone对象中,这个对象的名称是myPhone。myPhone现在是一个复杂的信息集合。我们将在后面的小节中介绍这一点如何有用。