biGpython

生亦何欢,死亦何苦? 予我長袖,我必善舞!

导航

java类型信息

运行时类型信息:

  1. RTTI,假设编译时已经知道了所有的类型
  2. 反射机制,在运行时发现和使用类的信息

范例:继承于shape下的circle square 等类,shape中拥有方法draw(System.out.println(this + "drawed")),其子类自动继承,shape有抽象方法toString(),子类实现其抽象方法。在新建List中加入其子类对象,遍历集合调用draw方法,输出各自的toString。

RTTI的含义在运行时,识别一个对象的类型。多态机制,“下面的事就由多态机制完成,shape对象实际执行什么代码,是由引用所指向的具体对象决定的。因为希望大部分代码可以尽量少的了解对象的具体类型。而多态,也是面向对象变成的基本目标。


Class 对象

  Class对象完成类运行时类型信息的获取。RTTI 以来 class对象 来完成。Class类还有大量RTTI的其他方式。

  类加载器子系统实际上可以包含一条类加载器链但是只有一个原生类加载器,是JVM实现的一部分

  所有的类都是第一次使用时候,动态的加载到JVM中的。当程序对一个类的静态成员引用时,就会加载这个类。所以,构造器也是类的静态方法。

  java程序在它运行之前并非被完全加载,其各个部分是在需要时候才加载c++只有的静态加载语言无法复制的。

  类加载器首先检查这个类的class对象是否已经加载。如果没有加载,默认的类加载器就会根据类名查找.class文件,这个class文件被加载时,同时会接受验证,以确保其没有被破坏,并且不好喊不良java代码。(java安全机制之一)

  一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象。

  Class.forName("className") 这个方法是Class类的一个static成员,forName(String str)是获取Class对象的引用的一种方法。作用是:如果某个类还未被加载,那么就加载它


posted on 2011-11-14 21:49  biGpython  阅读(436)  评论(0编辑  收藏  举报