/继承中的代码执行先后顺序
class ParentTest {
public static String PARENT_STATIC_FIELD = "父类-静态变量";
// 父类-静态块
static {
System.out.println(PARENT_STATIC_FIELD);
System.out.println("父类-静态代码块");
}
public String parentField = "父类-非静态变量";
// 父类-(构造代码块)非静态块
{
System.out.println(parentField);
System.out.println("父类-构造代码块");
}
public ParentTest() {
System.out.println("父类—无参构造函数");
}
}
public class B_3 extends ParentTest {
public static String STATIC_FIELD = "子类-静态变量";
// 静态块
static {
System.out.println(STATIC_FIELD);
System.out.println("子类-静态代码块");
}
public String field = "子类-非静态变量";
// 非静态块
{
System.out.println(field);
System.out.println("子类-构造代码块");
}
public B_3() {
System.out.println("子类-无参构造函数");
}
public static void main(String[] args) {
B_3 a = new B_3();
}
}
执行结果:
父类-静态变量
父类-静态代码块
子类-静态变量
子类-静态代码块
父类-非静态变量
父类-构造代码块
父类—无参构造函数
子类-非静态变量
子类-构造代码块
子类-无参构造函数