在java中,实例化一个对象时,首先会对类的所有成员变量进行初始化,当类成员初始化完成后才会调用对象所在类的构造函数创建对象。
这么说我自己都看不懂。所以直接上代码好了。
class Base{
static{
System.out.println("Base类static输出");
}
{
System.out.println("Base普通输出");
}
public Base() {
System.out.println("Base构造函数输出");
}
}
public class FaceDemo02 extends Base{
static{
System.out.println("FaceDemo02类static输出");
}
{
System.out.println("FaceDemo02类普通输出");
}
public FaceDemo02() {
System.out.println("FaceDemo02类构造函数输出");
}
public static void main(String[] args) {
new FaceDemo02();//实例化FaceDemo02();
}
}
一共创建了两个类,并且两个类是属于继承关系的。
运行之后的结果,
结果首先是输出了static对象,而且是先输出父类的static对象。
然后按照定义的顺序,先输出父类的再输出子类的,最后再输出构造函数的。
综上,得出java程序初始化顺序。
1.static对象优先被初始化
2.父类对象优先被初始化
3.其它按照定义顺序进行初始化.