RTTI实现原理(多态的原理)
来源:互联网 发布:华为云计算架构师 编辑:程序博客网 时间:2024/04/27 23:26
编译类型和运行类型的概念
运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息。
多态(polymorphism)是基于RTTI实现的。RTTI的功能主要是由Class类实现的。
Class类
Class类是"类的类"(class of classes)。如果说类是对象的抽象和集合的话,那么Class类就是对类的抽象和集合。
每一个Class类的对象代表一个其他的类。比如下面的程序中,Class类的对象c1代表了Human类,c2代表了Woman类。
public class Test{ public static void main(String[] args) { Human aPerson = new Human(); Class c1 = aPerson.getClass(); System.out.println(c1.getName());
Human anotherPerson = new Woman(); Class c2 = anotherPerson.getClass(); System.out.println(c2.getName());
}}class Human{
/** * accessor */ public int getHeight() { return this.height; } /** * mutator */ public void growHeight(int h) { this.height = this.height + h; }private int height; }class Woman extends Human{ /** * new method */ public Human giveBirth() { System.out.println("Give birth"); return (new Human()); }}
当我们调用对象的getClass()方法时,就得到对应Class对象的引用。
在c2中,即使我们将Women对象的引用向上转换为Human对象的引用,对象所指向的Class类对象依然是Woman。
Java中每个对象都有相应的Class类对象,因此,我们随时能通过Class对象知道某个对象“真正”所属的类。无论我们对引用进行怎样的类型转换,对象本身所对应的Class对象都是同一个。当我们通过某个引用调用方法时,Java总能找到正确的Class类中所定义的方法,并执行该Class类中的代码。由于Class对象的存在,Java不会因为类型的向上转换而迷失。这就是多态的原理。
阅读全文
0 0
- RTTI实现原理(多态的原理)
- MFC RTTI实现原理
- C++对象模型之RTTI的实现原理
- C++对象模型之RTTI的实现原理
- Java之RTTI机制的原理
- RTTI使用原理
- 多态的实现原理
- 多态实现的原理
- 多态的实现原理
- 多态的实现原理
- 多态实现的原理
- 多态的实现原理
- 多态的实现原理
- RTTI及多态的实现机制
- 关于C++ RTTI中typeid()的原理
- 多态实现原理
- 多态实现原理
- 多态实现原理
- 关于战斗力计算模型的补充——到底怎么配点属性才会最强呢?
- Android7.0相机拍照功能导致FileUriExposedException
- 5. linux C -- 共享内存
- xgboost for windows10 64bit
- 基于Spark Mllib,SparkSQL的电影推荐系统
- RTTI实现原理(多态的原理)
- Apk安装包的编译过程与生成
- 搭建网站注册域名时必须考虑的问题!
- 如何消除div之间的空隙
- handler源码探索
- test
- 高手进阶必读:Linux内核的同步机制-semaphore
- Socket.io对于房间的详细解析
- 数据结构—— 二叉树数据结构的节点删除问题