博客
关于我
java 中类的加载顺序
阅读量:111 次
发布时间:2019-02-26

本文共 1731 字,大约阅读时间需要 5 分钟。

 转载自:     

 

1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化

2、只有在调用new方法时才会创建类的实例
3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法
4、类实例销毁时候,首先销毁子类部分,再销毁父类部分

复制代码

public class Parent{    public static int t = parentStaticMethod2();    {        System.out.println("父类非静态初始化块");    }    static    {        System.out.println("父类静态初始化块");    }    public Parent()    {        System.out.println("父类的构造方法");    }    public static int parentStaticMethod()    {        System.out.println("父类类的静态方法");        return 10;    }    public static int parentStaticMethod2()    {        System.out.println("父类的静态方法2");        return 9;    }      @Override    protected void finalize() throws Throwable    {        // TODO Auto-generated method stub        super.finalize();        System.out.println("销毁父类");    }    }

复制代码

复制代码

public class Child extends Parent{    {        System.out.println("子类非静态初始化块");    }    static    {        System.out.println("子类静态初始化块");    }    public Child()    {        System.out.println("子类的构造方法");    }    public static int childStaticMethod()    {        System.out.println("子类的静态方法");        return 1000;    }    @Override    protected void finalize() throws Throwable    {        // TODO Auto-generated method stub        super.finalize();        System.out.println("销毁子类");    }}

复制代码

复制代码

public class Test{       public static void main(String[] args)    {        // TODO Auto-generated method stub        Parent.parentStaticMethod();//        Child child = new Child();            }}

复制代码

输出

父类的静态方法2父类静态初始化块父类类的静态方法

类中static 方法在第一次调用时加载,类中static成员按在类中出现的顺序加载。当调用静态方法2时输出

父类的静态方法2父类静态初始化块父类的静态方法2

注释掉Parent.parentStaticMethod();

去掉注释Child child = new Child();

复制代码

父类的静态方法2父类静态初始化块子类静态初始化块父类非静态初始化块父类的构造方法子类非静态初始化块子类的构造方法
你可能感兴趣的文章
mysql 常用命令
查看>>
Mysql 常见ALTER TABLE操作
查看>>
MySQL 常见的 9 种优化方法
查看>>
MySQL 常见的开放性问题
查看>>
Mysql 常见错误
查看>>
mysql 常见问题
查看>>
MYSQL 幻读(Phantom Problem)不可重复读
查看>>
mysql 往字段后面加字符串
查看>>
mysql 快照读 幻读_innodb当前读 与 快照读 and rr级别是否真正避免了幻读
查看>>
MySQL 快速创建千万级测试数据
查看>>
mysql 快速自增假数据, 新增假数据,mysql自增假数据
查看>>
MySql 手动执行主从备份
查看>>
Mysql 批量修改四种方式效率对比(一)
查看>>
Mysql 报错 Field 'id' doesn't have a default value
查看>>
MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
Mysql 拼接多个字段作为查询条件查询方法
查看>>
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>