您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

重写:有哪些方法可以引用Java类?

2024/3/4 16:58:32发布58次查看
1、类的主动引用,一定会发生类的初始化。当虚拟机启动,先初始化main方法所在的类
实例化一个类的对象
调用类的静态成员(除了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类?的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product