博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA类加载顺序
阅读量:6901 次
发布时间:2019-06-27

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

通过一个父类和子类代码来说明:

1 public class ClassLoaderOrder { 2     public static void main(String[] args) { 3         /** 4          * 输出: 5          *     父类的静态方法2 6          *    我是父类静态初始化块 7          *    父类类的静态方法 8          *    在类被加载的时候,会先初始化类中静态成员变量 也就是t  9          *    t调用了静态方法2 所以会先输出 "父类的静态方法2"10          *    然后初始化类的静态代码块 "我是父类静态初始化块"11          *    最后调用parentStaticMethod(),打印"父类类的静态方法"12          */13      //Parent.parentStaticMethod();14         /**15          * 输出:16          *  父类的静态方法217          *  我是父类静态初始化块18          *  子类静态初始化块19          *  20          *  我是父类非静态块21          *  我是父类构造函数22          *  23          *  子类的静态方法24          *  子类非静态初始化块25          *  子类的构造方法26          *  27          *  子类被new时:28          *      先初始化父类静态变量(按顺序)29          *      初始化父类和子类的静态块30          *      初始化父类非静态块,父类构造函数31          *      子类静态变量32          *      初始化子类非静态块,子类构造函数33          *  34          */35         Child child = new Child();36     }37 38 }39 40 class Parent {41     public static int t = parentStaticMethod2();42     43     static {44         System.out.println("我是父类静态初始化块");45     }46     {47         System.out.println("我是父类非静态块");48     }49 50     public Parent() {51         System.out.println("我是父类构造函数");52     }53 54     public static int parentStaticMethod() {55         System.out.println("父类类的静态方法");56         return 10;57     }58 59     public static int parentStaticMethod2() {60         System.out.println("父类的静态方法2");61         return 9;62     }63     64     @Override65     protected void finalize() throws Throwable{66         super.finalize();67         System.out.println("销毁父类");68     }69     70 }71 72 class Child extends Parent {73     74     public int i = childStaticMethod();75     76     {77         System.out.println("子类非静态初始化块");78     }79     static80     {81         System.out.println("子类静态初始化块");82     }83     public Child()84     {85         System.out.println("子类的构造方法");86     }87     public static int childStaticMethod()88     {89         System.out.println("子类的静态方法");90         return 1000;91     }92     @Override93     protected void finalize() throws Throwable{94         // TODO Auto-generated method stub95         super.finalize();96         System.out.println("销毁子类");97     }98 99 }

 

转载于:https://www.cnblogs.com/showme1942/p/6483996.html

你可能感兴趣的文章
Python中else的用法
查看>>
蓝桥杯 迷宫
查看>>
多行截断
查看>>
完成个人中心 导航标签
查看>>
使用位生成子集
查看>>
需求分析--12章 过程建模
查看>>
C#运用实例.读取csv里面的词条,对每一个词条抓取百度百科相关资料,然后存取到数据库...
查看>>
css3选择器
查看>>
nginx虚拟主机配置
查看>>
PYthon基础
查看>>
delphi 把一个表的内容转到另一个表暂存时出错的解决方法。
查看>>
Android Studio 使用笔记:[转] Mac下修改Android Studio 所用的JDK版本
查看>>
《陶哲轩实分析》习题10.4.1
查看>>
【转载】浅析java中的语法糖
查看>>
Windows API 第21篇 DeleteVolumeMountPoint 删除挂载点
查看>>
CSS一些解决办法收集整理
查看>>
关于对char类型数据赋予负值的汇编表现
查看>>
润乾报表在proxool应用下的数据源配置
查看>>
DATABASE
查看>>
Python基础23_os,sys,序列化,pickle,json
查看>>