JAVA编程思想读书笔记(三)--RTTI

接上篇JAVA编程思想读书笔记(二)

第十一章 运行期类型判定

No1:

对于作为程序一部分的每个类,它们都有一个Class对象。换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说,是保存在一个完全同名的.class文件中)。在运行期,一旦我们想生成那个类的一个对象,用于执行程序的Java虚拟机(JVM)首先就会检查那个类型的Class对象是否已经载入。若尚未载入,JVM就会查找同名的.class文件,并将其载入。所以Java程序启动时并不是完全载入的,这一点与许多传统语言都不同。

一旦那个类型的Class对象进入内存,就用它创建那一类型的所有对象。

No2:

RTTI(运行期类型判定)包括

1.类型强转

2.Class.forName("类全名“);--返回一个句柄--类名.class

3.instanceof

No3:

Class c = Class.forName("类全名”);

c.getMethods();--获取类的方法

c.getMethods();--获取类的构造器

No4:

RTTI:run-time type identification

多态就是基于RTTI实现的,RTTI的功能主要是由Class实现的

多态的原理:Java中每个对象都有相应的Class类对象,因此,我们随时能通过Class对象知道某个对象“真正”所属的类。无论我们对引用进行怎样的类型转换,对象本身所对应的Class对象都是同一个。当我们通过某个引用调用方法时,Java总能找到正确的Class类中所定义的方法,并执行该Class类中的代码。由于Class对象的存在,Java不会因为类型的向上转换而迷失。

No5:

Human personA = new Human();
Class c1 = personA.getClass();
String name1 = c1.getName();

 

getClass()就是得到对应Class对象的引用

No6:

Class c2 = Class.forName("Human");
String name2 = c2.getName();

 

forName()方法接收一个字符串作为参数,该字符串是类的名字。这将返回对应的Class类对象

No7:

Class c3 = Woman.class;
String name3 = c3.getName();

 

Woman.class方法是直接调用类的class成员,这将返回对应的Class对象

No8:

Class类的方法:

c1.getName();--返回类的名字
c1.getPackage();--返回类所在的包
c1.newInstance();--创建相应类的对象
c1.getFields();--返回所有的public数据成员
c1.getMethods();--返回所有的public方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值