《Android游戏开发详解》一2.12 设置和访问对象的状态
本节书摘来异步社区《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 { 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;
注意一下,我们是如何访问属于Phone对象的实例变量的。要获取一个对象的特定的变量,使用点运算符。点运算符用来表示所有权。例如,myPhone.poweredOn表示属于myPhone对象的poweredOn变量。
现在已经为Phone对象的变量指定了一些初始值,myPhone是描述性数据的一个集合。如果某人访问了我们的myPhone对象,他通过打印myPhone的当前状态的值,就能够完全知道其状态了,如程序清单2.11所示(从第11行到第15行)。
程序清单2.12 World.java—更新后的版本
01 public class World { 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; 11 System.out.println("myPhones 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);
再次运行该程序。应该会看到如下所示的输出。
Hello, world! myPhones state: Powered on: true Playing music: false Manufacturer: Samsung Version: 4.4
正如你所看到的,我们能够将有意义的数据组织到一个集合中,即一个Phone对象中,这个对象的名称是myPhone。myPhone现在是一个复杂的信息集合。我们将在后面的小节中介绍这一点如何有用。
Android状态管理优化 01.界面状态有哪些 02.采用include方式管理 03.在Base类中处理逻辑 04.如何降低偶性和入侵性 05.封装低入侵性状态库 5.1 自定义帧布局 5.2 自定义状态管理器
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- Android Lint的使用
- 如何将为Android开发的AIR应用转移到SD卡
- [Android Pro] android 杀死进程的方法
- [Android Memory] android 警告:Exported activity does not require permission
- Android_(游戏)打飞机03:控制玩家飞机
- Android API之android.os.AsyncTask
- 一、Android Studio入门——Eclipse快捷键配置
- android脚步---设置layout隐藏属性
- 【ANDROID游戏开发之一】设置全屏以及绘画简单的图形
- 【ANDROID游戏开发之五】游戏注册界面DEMO-实现两个ACTIVITY之间的切换与数据交互!
- EasyPusher进行Android UVC外接摄像头直播推送实现方法
- Illegal resource reference: @*android resources are private and not always present
- Android Studio / IDEA 中.android 文件夹移动出默认位置
- Android【报错】. lang。android.app ClassCastException。SharedPreferencesImpl不能被强制转换为android.content.Shared
- 《Android进阶解密》— Android 书籍
- Android【报错】java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.Bu
- 【Android笔记65】Android小案例之简易版的房贷计算器(附源代码)
- Android实现TCP发送,可发送多条数据
- Android——解决port占用问题导致的模拟器无法识别
- 【Android Gradle 插件】自定义 Gradle 任务 ② ( 在 Terminal 面板中执行 gradlew task 命令显示所有任务 | 命令行输出所有任务 | 单独执行指定任务 )
- 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
- 使用工具来提升Android开发效率
- Android 开发 --Unable to resolve target 'android-19'
- Android 解决menu弹出盖住标题栏
- Android Studio第一个NDK程序
- Android Studio全局搜索Ctrl+Shift+F占用解决