您当前的位置: 首页 > 
  • 0浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

静态代码块、代码块、构造函数的初始化顺序

沙漠一只雕得儿得儿 发布时间:2016-10-08 09:13:24 ,浏览量:0

1. 单一类中:静态变量、静态块、普通变量、普通块、构造方法;

2. 有继承的子类中:先父后子。子类的静态变量和静态块会插队在父类静态块的后面,以后才严格尊重父亲大人。

创建顺序:

1。按照顺序执行父类静态变量、静态块

2。按照顺序执行子类静态变量、静态块

3。构造父类:按照顺序执行父类的普通变量、普通块

执行父类的构造函数

4。构造子类:按照顺序执行子类的普通变量、普通块

执行子类的构造函数

package Java执行顺序总结;

public class Test1 {

	public static void main(String[] args) {
		//A a = new A();
		B b = new B();
		//A a = new B();
	}

}

class A {

	public static int a = 0;
	public int b = 0;

	static {
		System.out.println("■父类 - 静态初始块 - 位置是构造函数前");
	}

	{
		System.out.println("■父类 - 普通初始块 - 位置是构造函数前");
	}

	public A() {
		System.out.println("■父类 - 构造函数");
	}

	static {
		System.out.println("■父类 - 静态初始块 - 位置是构造函数后");
	}

	{
		System.out.println("■父类 - 普通初始块 - 位置是构造函数后");
	}
}

class B extends A {

	public static int a = 0;
	public int b = 0;

	static {
		System.out.println("◆子类 - 静态初始块 - 位置是构造函数前");
	}

	{
		System.out.println("◆子类 - 普通初始块 - 位置是构造函数前");
	}

	public B() {
		System.out.println("◆子类 - 构造函数");
	}

	static {
		System.out.println("◆子类 - 静态初始块 - 位置是构造函数后");
	}

	{
		System.out.println("◆子类 - 普通初始块 - 位置是构造函数后");
	}
}

输出结果如下:

■父类 - 静态初始块 - 位置是构造函数前
■父类 - 静态初始块 - 位置是构造函数后
◆子类 - 静态初始块 - 位置是构造函数前
◆子类 - 静态初始块 - 位置是构造函数后
■父类 - 普通初始块 - 位置是构造函数前
■父类 - 普通初始块 - 位置是构造函数后
■父类 - 构造函数
◆子类 - 普通初始块 - 位置是构造函数前
◆子类 - 普通初始块 - 位置是构造函数后
◆子类 - 构造函数

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.0510s