Java 普通变量,静态变量,普通代码块,静态代码块,构造方法的执行顺序
1:执行父类静态变量赋值/代码块,按变量/代码块定义的顺序执行
2:执行子类静态变量赋值/代码块,按变量/代码块定义的顺序执行
3:执行父类普通变量赋值/代码块,按变量/代码块定义的顺序执行
4:执行父类构造函数
5:执行字类普通变量赋值/代码块,按变量/代码块定义的顺序执行
6:执行子类构造函数
public class SuperClass {
public static Integer k1 = 1;
static {
System.out.println("静态代码块1:"+k1);
}
public Integer k2 = 2;
{
System.out.println("普通代码块1:"+k2);
}
{
System.out.println("普通代码块2:"+k2);
}
public SuperClass() {
System.out.println("构造函数1");
}
}
public class ChildClass extends SuperClass{
static {
System.out.println("静态代码块2![在这里插入图片描述](https://img-blog.csdnimg.cn/20200530160835381.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2N4ODk3NDU5Mzc2,size_16,color_FFFFFF,t_70#pic_center):"+k1);
}
{
System.out.println("普通代码块3:"+k2);
}
public ChildClass() {
System.out.println("构造函数2");
}
public static void main(String args[]){
ChildClass childClass = new ChildClass();
}
}
执行结果