类初始化过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类初始化过程相关的知识,希望对你有一定的参考价值。

类初始化过程

1. 初始化父类的静态成员和静态代码块,按顺序执行,只执行一次;

2. 初始化子类的静态成员和静态代码块,按顺序执行,只执行一次;

3. 初始化父类的实例成员和实例代码块,按顺序执行,每次创建对象都执行一次;

4. 初始化父类的构造方法,每次创建对象都执行一次;

5. 初始化子类类的实例成员和实例代码块,按顺序执行,每次创建对象都执行一次;

6. 初始化子类的构造方法,每次创建对象都执行一次;

 1 package test;
 2 
 3 class ClassInitSuper{
 4     static {
 5         System.out.println("super static init");
 6     }
 7     
 8     {
 9         System.out.println("super instance init");
10     }
11     
12     public ClassInitSuper(){
13         System.out.println("super new init");
14     }
15 }
16 
17 
18 public class ClassInit extends ClassInitSuper{
19 
20     static {
21         System.out.println("sub static init");
22     }
23     
24     {
25         System.out.println("sub instance init");
26     }
27     
28     public ClassInit(){
29         System.out.println("sup new init");
30     }
31     
32     public static void main(String[] args) {
33         new ClassInit();
34         new ClassInit();
35         
36     }
37     
38     public static void test(){
39         
40         
41     }
42 
43 }

输出结果如下:

super static init
sub static init
super instance init
super new init
sub instance init
sup new init
super instance init
super new init
sub instance init
sup new init

 

以上是关于类初始化过程的主要内容,如果未能解决你的问题,请参考以下文章

java代码的初始化过程研究

类初始化过程

对象实例化过程

Red5源代码分析 - 关键类及其初始化过程

类加载过程

类加载过程(clinit()),对象实例化过程(init())