实例化一个类的对象
调用类的静态成员(除了final常量)和静态方法
使用java.lang.reflect包的方法对类进行反射调用
当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类
2、类的被动引用,不会发生类的初始化
当访问一个静态域时,只有真正声明这个域的类才会被初始化。如:当通过子类引用父类的静态变量,不会导致子类初始化
通过数组定义类引用,不会触发此类的初始化
引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了)
实例
package com.volcano.reflection;//什么时候会发生类的初始化,除了第一个注释一直开着,其他都要独立打开测试,否则不准确public class testreflection3 { static { //1.虚拟机启动就会最先初始化main方法所在的类 会 system.out.println(main方法被加载); } public static void main(string[] args) throws classnotfoundexception { //2.实例化一个对象 会 //new father(); //3.调用类的静态成员(除了final常量)和静态方法 会 //system.out.println(son.a); //4.使用java.lang.reflect包的方法对类进行反射调用 会 //class cls = class.forname(com.volcano.reflection.father); //5.当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类 会 //new son(); //6.当访问一个静态域时,只有真正声明这个域的类才会被初始化 不会 //system.out.println(father.a);//两个都是只加载father //system.out.println(son.a);//因为a是father的静态成员 //7.通过数组定义类引用,不会触发此类的初始化 不会 //father[] fathers = new father[10]; //8.引用常量不会触发此类的初始化 不会 //system.out.println(father.b); }}class father{ static { system.out.println(father被加载); } static int a=100; static final int b = 300;}class son extends father{ static { system.out.println(son被加载); } static int c=200; }
以上就是重写:有哪些方法可以引用java类?的详细内容。
