package com.jnhm.test.instantiationOrder;
/**
* @Description: 测试类实化顺序
* @Author: XiaoTaoTaoT
* @Date: 2020/3/21 13:26
**/
public class TestInstantiationOrderFather {
public static String str = sayStr("父类静态变量执行");
public String str2 = sayStr("父类成员变量执行");
static {
System.out.println("父类静态代码块执行");
}
{
System.out.println("父类非静态代码块执行");
}
public TestInstantiationOrderFather() {
System.out.println("父类构造方法执行");
}
public static String sayStr(String str) {
System.out.println(str);
return str;
}
public String method() {
return "父类成员函数";
}
}
package com.jnhm.test.instantiationOrder;
public class TestInstantiationOrderChild extends TestInstantiationOrderFather {
public static String str = sayStr("子类静态变量执行");
public String str2 = sayStr("子类成员变量执行");
static {
System.out.println("子类静态代码块执行");
}
{
System.out.println("子类非静态代码块执行");
}
public TestInstantiationOrderChild() {// 构造函数无返回值,在实例化对象的时候魏队形赋值
System.out.println("子类构造方法执行");
this.str2 = "hello";
}
public static String sayStr(String str) {
System.out.println(str);
return str;
}
public String method() {
return "调用子类成员方法";
}
public static void main(String args[]) {
new TestInstantiationOrderChild();
}
}
执行结果:
父类静态变量执行
父类静态代码块执行
子类静态变量执行
子类静态代码块执行
父类成员变量执行
父类非静态代码块执行
父类构造方法执行
子类成员变量执行
子类非静态代码块执行
子类构造方法执行