4.1.5Java程序初始化顺序?

class Base{
	static{
		System.out.println("Base static block");
	}
	{
		System.out.println("Bae block");
	}
	public Base(){
		System.out.println("Base constructor");
	}
}

public class Derived extends Base{
	static{
		System.out.println("Derived static block");
	}
	{
		System.out.println("Derived block");
	}
	public Derived(){
		System.out.println("Derived constructor");
	}
	public static void main(String[] args){
		new Derived();
	}
}

Java程序初始化顺序?
  
Java初始化遵循三原则(优先级依次递减)

静态对象(变量)优先于非静态对象(变量)初始化。静态对象(变量)只初始化一次,非静态对象(变量)可多次初始化
父类优先于子类初始化
按照成员变量定义顺序进行初始化,即使变量定义散布在方法定义中,依旧在任何方法(包括构造函数)调用之前先初始化。
  
Java初始化可以在不同代码块完成,执行顺序如下:
java程序初始化顺序
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40807247/article/details/83057914
今日推荐