Java 静态代码块 static {...}、非静态代码块 {...}、构造器(构造方法、构造函数) public Xxx() {...} 执行顺序

// BaseOrder.java 父类

package com.daixiaoma.pojo;
public class BaseOrder {
	/**
	 * 静态代码块
	 */
	static {
		System.err.println("BaseOrder 静态代码块1");
	}

	/**
	 * 静态代码块
	 */
	static {
		System.err.println("BaseOrder 静态代码块2");
	}

	/**
	 * 非静态代码块
	 */
	{
		System.err.println("BaseOrder 非静态代码块1");
	}

	/**
	 * 非静态代码块
	 */
	{
		System.err.println("BaseOrder 非静态代码块2");
	}

	/**
	 * 构造器
	 */
	public BaseOrder() {
		System.err.println("BaseOrder 构造器");
	}
}

// Order.java 子类

package com.daixiaoma.pojo;
public class Order extends BaseOrder {
	/**
	 * 静态代码块
	 */
	static {
		System.err.println("Order 静态代码块1");
	}

	/**
	 * 静态代码块
	 */
	static {
		System.err.println("Order 静态代码块2");
	}

	/**
	 * 非静态代码块
	 */
	{
		System.err.println("Order 非静态代码块1");
	}

	/**
	 * 非静态代码块
	 */
	{
		System.err.println("Order 非静态代码块2");
	}

	/**
	 * 构造器
	 */
	public Order() {
		System.err.println("Order 构造器");
	}
}

// App.java 测试类

package com.daixiaoma.test;
import com.daixiaoma.pojo.Order;
public class App {
	public static void main(String[] args) {
		Order order = new Order();
	}
}

输出结果:
BaseOrder 静态代码块1
BaseOrder 静态代码块2
Order 静态代码块1
Order 静态代码块2
BaseOrder 非静态代码块1
BaseOrder 非静态代码块2
BaseOrder 构造器
Order 非静态代码块1
Order 非静态代码块2
Order 构造器

总结:父类静态代码块 static {} => 子类静态代码块 static {} => 父类非静态代码块 {} => 父类构造方法 public Xxx() {} => 子类非静态代码块 {} => 子类构造方法 public Xxx() {}

相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页