在java程序中,实例化对象的时候,对象所在类的所有成员变量首先要进行初始化,只有当所有的类成员都初始化完成之后,才会调用类的构造函数创建对象。
java程序初始化遵循3个原则(优先级一次递减):
1、静态对象(变量)优先于非静态对象(变量)初始化。其中静态对象只会初始化一次,非静态对象可能会初始化多次;
2、父类优先于子类初始化;
3、按照成员变量定义的顺序进行初始化。
java初始化工作可以在许多不同的代码块来完成(例如静态代码块,构造函数等),它们执行的顺序为:
父类静态变量、父类静态代码块,子类静态变量,子类静态代码块,父类非静态变量,父类非静态代码块,父类构造函数,子类非静态变量,子类非静态代码块子类构造函数。