Java初始化时代码执行顺序

Java代码执行顺序

总结一下:就是静态优先级高于非静态优先级,在静态和非静态之内就是父类优先级高于子类优先级。
构造函数可以归结为非静态的。
【静态代码块和静态变量之间没有固定优先级,谁先定义,谁先执行】

1. 示例代码

public class TestInitialSeq extends Father {
  public static Print static_var_son = new Print("子类静态变量");

  public Print var_son = new Print("子类非静态变量");

  static {
    System.out.println("子类静态代码块");
  }

  {
    System.out.println("子类非静态代码块");
  }

  public TestInitialSeq() {
    System.out.println("子类构造函数");
  }

  public static void main(String[] args) {
    new TestInitialSeq();
  }
}

class Father {

  public Print var_father = new Print("父类非静态变量");

  static {
    System.out.println("父类静态代码块");
  }

  public static Print static_var_father = new Print("父类静态变量");

  {
    System.out.println("父类非静态代码块");
  }

  public Father() {
    System.out.println("父类构造函数");
  }
}

class Print {
  public Print(String word) {
    System.out.println(word);
  }
}

2. 示例结果

在这里插入图片描述

发布了67 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sinat_32336967/article/details/97013861