《Android游戏开发详解》——第3章,第3.3节接口
本节书摘来自异步社区《Android游戏开发详解》一书中的第3章,第3.3节接口,作者 【美】Jonathan S. Harbour,更多章节内容可以访问云栖社区“异步社区”公众号查看
3.3 接口
Android游戏开发详解
接下来,我们介绍一种方法,使用所谓的接口(interface),将对象分组为不同的类别。接口是一个抽象(abstract)的类别,它描述了属于该类别的对象的基本组成部分。为了更好地理解这一点,我们来学习一个实例。
接口和类相似,但是,它有一些显著的区别。如下所示是一个Human接口的样子。
程序清单3.8 Human接口
public interface Human { public void eat(); public void walk(); public void urinate(int duration); }
正如程序清单3.8所示,接口包含了各种抽象(abstract)的方法,它们没有方法体。这些没有方法体的抽象方法告诉我们,一个Human的对象分类必须能够做什么,但它们没有指定必须要如何实现这些操作。
为了说明接口实际上是什么,让我们先不要看代码。在你的脑海里,想象一下作为一个人类意味着什么(你不必变得太富有哲理)。接下来,我们看看如下的列表,告诉我是否每个人都满足你对于人类的看法:你的邻居、你最好的朋友和你自己。
对于所有这些人,你可能会回答是的。这是因为,当我们让你想一下对人类的看法的时候,你不会认为这是某一个个别的人。相反,你会形成某种规则,即一个人如何与他的世界交互,并且使用这种思路来判定不同人的人类特性。
接口大体上也是如此。程序清单3.8中的Human接口,不是用来创建单个的Human对象的。相反,它定义了一个交互的模式,阐述了一个Human对象在你的程序中应该具有什么样的行为。它提供了一组基本的要求,如果要创建Human类型的更多的具体版本(如King类)的话,必须要满足这些需求,如程序清单3.9所示。
程序清单3.9 King类
public class King implements Human { public void eat() { System.out.println("The King eats."); public void walk() { System.out.println("The King walks."); public void urinate(int duration) { System.out.println("The King urinates for " + duration + " minutes."); public void rule() { System.out.println("The King reigns.");
}
研究一下King类和Human接口之间的关系,你会注意到一些事情。首先,King类声明了它实现了Human接口,作为程序员,我们就是这样指定想要让King类属于Human这个分类的。其次,King类声明了程序清单3.8中给出的Human接口中的所有3个方法,并且这个类为这些前面的抽象方法中的每一个都提供了一个具体的方法体。第三,King类有一个额外的名为rule()的方法,这将其与泛型的Human区分开来。
接口是一系列的协议。如果选取了一个对象来实现一个接口,该对象同意实现接口中的每一个抽象方法。这意味着什么呢?这意味着,一个King对象,不管他想要保持多么神秘,都必须实现所有的Human接口的抽象方法,包括urinate()方法,因为国王毕竟也是人。如果不满足这一需求,愤怒的JVM将会向他显示红色的错误消息。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- android在JNI_OnLoad入口函数下断点动态调试so库
- Android Studio第一次启动的Fetching android sdk component information的问题
- Android 判断手机是32位CPU还是64位CPU android.os.Build类字段含义
- Android之 ImageView android:src和tools:src的区别是什么?
- Android 折叠式布局
- Android Studio 打包APK(详细版)
- 【Android】读取文件数据到byte数组,并将读出的数据写入文件中强制刷新
- 从零开始,全套Android架构师学习笔记,帮你打开Android世界的大门
- 我的Android前生今世之缘-学习经验-安卓教程(六)
- 《Android 游戏开发大全(第二版)》——6.1节射击类游戏
- 《Android 游戏开发大全(第二版)》——6.11节小结
- 《Android游戏开发详解》一2.2 设置开发机器
- 《Android游戏开发详解》一2.9 类
- 《Android游戏开发详解》一2.10 使用对象
- 《Android游戏开发详解》一3.3 接口
- 《Android 源码设计模式解析与实战》——第2章,第2.9节运用单例模式
- 《Android游戏开发详解》——第2章,第2.4节执行Java程序
- 《Android游戏开发详解》——第2章,第2.9节类
- 《Android游戏开发详解》——第3章,第3.7节里程碑
- 《Android游戏开发详解》一2.3 编写第一个程序
- 《Android游戏开发详解》一2.5 魔术揭秘——编译器和JVM
- 《Android游戏开发详解》一2.16 区分类和对象
- Android权限设置android.permission完整列表
- Android面试官:“你的懂View绘制吗?”
- 如何用 Android Studio 导入开源项目以及常见错误的解决办法
- Android解析WindowManager(二)Window的属性
- 关于android/ios开发中的单元测试
- Android入门常见问题
- M创aterial Design作风Android申请书--创建列表和卡
- Android bluetooth介绍(两): android 蓝牙源架构和uart 至rfcomm过程