• 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方法
  • 相关阅读:
    Things You Should Know
    因为web.config配置,导致(当前不会命中断点,还没有为该文档加载任何符号)
    【HTML5 Canvas游戏开发】笔记(二) 显示一张图片
    【HTML5 Canvas游戏开发】笔记(一) 概述和基础讲解
    const char* pcr&char* const pcr
    【Python扩展阅读【转】EasyGui 学习文档【超详细中文版】】
    【Python扩展阅读【转】】字符串的方法及注释
    【Python⑥】python的缩进,条件判断和循环
    【Python⑤】python序列---list和tuple
    【Python④】python恼人的字符串,格式化输出
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/7411452.html
Copyright © 2020-2023  润新知