先看结果!
静态代码块static{} -> 父类构造 -> 初始代码块{} -> 子类构造
// 静态代码块只在第一次实例化类的时候执行一次,再次实例化的时候不再执行
package com.study.StaticConstructionDemo;
/**
* @Description 父类
* @Date 2021/9/4 18:02
* @Created by 折腾的小飞
*/
public class Fu {
public Fu() {
System.out.println("父类构造");
}
}
package com.study.StaticConstructionDemo;
/**
* @Description 子类
* @Date 2021/9/4 18:02
* @Created by 折腾的小飞
*/
public class Zi extends Fu{
{
System.out.println("初始代码块"); // 实例化时,在构造方法中的最前面执行
}
static {
System.out.println("静态构造代码块"); // 在构造方法之前执行,在类加载时只执行一次
}
public Zi() {
System.out.println("子类构造");
}
}
package com.study.StaticConstructionDemo;
import org.junit.Test;
/**
* @Description 测试类
* @Date 2021/9/4 18:03
* @Created by 折腾的小飞
*/
public class Demo {
@Test
public void test() {
Fu f1 = new Zi();
Fu f2 = new Zi();
}
}