- 2
- 0
- 约3.47万字
- 约 26页
- 2017-06-07 发布于湖北
- 举报
【本教程REENT创意设计不享有版权】
说明
本教程来自互联网,由REENT创意设计教程制作团队收集整理,仅供成员学习交流用,
不得用于商业、出版业等行业,如有违反,由此带来的所有法律纠纷有违反者负责,与REENT
创意设计无关,REENT创意设计将不承担任何责任。
2011 年 10 月 05 日
第十章 类型检查
运行期类型识别(RTTI,run-time type identification)的概念初看起来非常简单:当你只有
一个指向对象的基类的引用时,RTTI 机制可以让你找出这个对象确切的类型。
对 RTTI 的需要,揭示了面向对象设计中许多有趣(并且复杂)的问题,同时也提出了如何
组织程序的问题。
本章将讨论 Java 是如何允许我们在运行期识别对象和类的信息。主要有两种方式:一种
是传统的 RTTI,它假定我们在编译期和运行期已经知道了所有的类型;另一种是“反射机
制(reflection)”,它允许我们在运行期获得类的信息。我们先讨论“传统”的 RTTI,再讨论
反射。
为什么需要RTTI
让我们来思考已经很熟悉了的一个使用了多态的类层次结构的例子。最一般化的类型是基类
Shape,而派生出的具体类有 Circle,Square 和 Triangle。
这是一个典型的类层次结构图,基类位于顶部,派生类向下扩展。面向对象编程基本的目的
是:你的代码只操纵对基类(这里是 Shape)的引用。这样,如果你要添加一个新类(比
如从 Shape 派生 Rhomboid)来扩展程序,就不会影响到原来的代码。在这个例子的 Shape
接口中动态绑定了 draw()方法,目的就是让客户端程序员使用一般化的 Shape 的引用来
调用 draw()。draw()在所有派生类里都会被重载,并且由于它是被动态绑定的,所以即
使是通过通用的 Shape 引用来调用,也能产生正确行为。这就是多态(polymorphism)。
因此,我们通常会创建一个特定的对象(Circle,Square,或者 Triangle),把它向上
转型成 Shape (忽略对象的特定类型),并在后面的程序中使用匿名(译注:即不知道具体
类型)的 Shape 引用。
简要复习一下多态和向上类型转换,并为上面的例子编码:
//: c10:Shapes.java
import com.bruceeckel.simpletest.*;
class Shape {
void draw() { System.out.println(this + .draw()); }
}
class Circle extends Shape {
public String toString() { return Circle; }
}
class Square extends Shape {
public String toString() { return Square; }
}
class Triangle extends Shape {
public String toString() { return Triangle; }
}
public class Shapes {
private static Test monitor = new Test();
public static void main(String[] args) {
// Array of Object, n
您可能关注的文档
- 数模板抽象描述语言设计与到C的转换.pdf
- 刹车盘的优点与作用.doc
- 产品类别和网上购物决策过程的关系.pdf
- 第六章 输入输出和技术.ppt
- 厂区综合布线技术方案教案.pdf
- 出入境术语与相关用语整理综合版.doc
- 初二数学上册 函数与认识一次函数.doc
- 数学建模 - 第九讲 排序问题.ppt
- 数学建模和LINGO04章.ppt
- 初三第一轮复习方程和不等式.doc
- GB/T 42818.2-2026认知无障碍 第2部分:报告.pdf
- 中国国家标准 GB/T 47116-2026地下采矿机械 工作面移动式采掘机械 采煤机和犁式系统的安全要求.pdf
- 《GB/T 47116-2026地下采矿机械 工作面移动式采掘机械 采煤机和犁式系统的安全要求》.pdf
- 中国国家标准 GB/T 42818.2-2026认知无障碍 第2部分:报告.pdf
- 《GB/T 42818.2-2026认知无障碍 第2部分:报告》.pdf
- 《GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器》.pdf
- 中国国家标准 GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器.pdf
- GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器.pdf
- GB/T 45305.5-2026声学 建筑构件隔声的实验室测量 第5部分:测试设施和设备的要求.pdf
- 中国国家标准 GB/T 45305.5-2026声学 建筑构件隔声的实验室测量 第5部分:测试设施和设备的要求.pdf
原创力文档

文档评论(0)