一、java程序初始化顺序
-
父类的静态变量和静态块赋值(按照声明顺序)
-
子类的静态变量和静态块赋值(按照声明顺序)
-
父类成员变量和块赋值(即非静态代码块)(按照声明顺序)
-
父类的构造方法(注:如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中,一定要使用“super(参数)”,指定调用父类的有参构造器,不然会出现报错)
-
子类的成员变量和块赋值(即非静态代码块)(按照声明顺序)
-
子类的构造方法
二、示例代码
/**
* @Author gaojunlong
* @Date 2020/8/29
* @Time 17:49
* @Version 1.0
*/
class Father {
//父类的构造方法
public Father() {
System.out.println("class Father");
}
//父类的非静态代码块
{ System.out.println("I'm Father class"); }
//父类的静态方法
static {
System.out.println("class Father static"); }
}
public class Son extends Father {
//子类的构造方法
public Son() {
System.out.println("class Son");
}
//子类的非静态代码块
{
System.out.println("I'm Son class");
}
//子类的静态代码块
static {
System.out.println("class Son static");
}
public static void main(String[] args) {
new Son();
}
}
运行结果:
class Father static
class Son static
I'm Father class
class Father
I'm Son class
class Son