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);
}
}