static 游离块 、一般游离块、子父类构造方法,执行顺序测试
父类 Base
public class Base {
{
System.out.println("父类游离块");
}
static {
System.out.println("父类静态游离快");
}
public Base() {
System.out.println("父类无参构造函数");
}
public Base(String params) {
System.out.println("父类有参构造函数");
}
}
子类 SubClass
public class SubClass extends Base {
static {
System.out.println("子类静态游块");
}
{
System.out.println("子类游离块");
}
public SubClass() {
System.out.println("子类无参构造函数");
}
public SubClass(String params) {
super(params);
System.out.println("子类有参构造函数");
}
}
测试类 TestClass
public class TestClass {
public static void main(String[] args) {
System.out.println("---------------- 分隔线 ----------------");
test_2();
}
public static void test_1() {
SubClass sub1 = new SubClass();
/*结果:
1 父类静态游离快
2 子类静态游块
3 父类游离块
4 父类无参构造函数
5 子类游离块
6 子类无参构造函数
*/
}
public static void test_2() {
SubClass sub2 = new SubClass("hello");
/*结果:
1 父类静态游离快
2 子类静态游块
3 父类游离块
4 父类有参构造函数
5 子类游离块
6 子类有参构造函数
*/
}
public static void test_3() {
Base base1 = new SubClass();
/*结果:
1 父类静态游离快
2 子类静态游块
3 父类游离块
4 父类无参构造函数
5 子类游离块
6 子类无参构造函数
*/
}
}
结论:
父类静态游离快 > 子类静态游离块 > 父类游离块 > 父类构造函数 > 子类游离块 > 子类构造函数