Java 类初始化顺序

总的来说:

父类静态代码块->子类静态代码块->子类main()方法->父类构造块->父类构造方法->子类构造块->子类构造方法

注意,就算是静态的方法也需要调用才能使用,初始化只涉及到属性和构造块、构造方法,不涉及到一般的方法。

package com.tonyluis;

class superClass {
	public superClass() {
		System.out.println("构造方法");
	}

	{
		System.out.println("构造块");
	}
	static {
		System.out.println("静态方法块");
	}
}

public class Test extends superClass {
	public static void main(String args[]) {
		System.out.println("Test main");
		//Test test = new Test();
	}

	public Test() {
		System.out.println("Test构造方法");
	}

	{
		System.out.println("Test构造块");
	}
	static {
		System.out.println("Test静态方法块");
	}

}

输出:

静态方法块
Test静态方法块
Test main

取消掉main()方法的注释,输出

静态方法块
Test静态方法块
Test main
构造块
构造方法
Test构造块
Test构造方法

原文地址:https://www.cnblogs.com/tonyluis/p/5797573.html