class Parent {
public static String p_StaticField = "父类–静态变量";// 静态变量
public String p_Field = "父类–变量"; // 变量
static { // 静态初始化块
System.out.println(p_StaticField);
System.out.println("父类–静态初始化块");
}
// 初始化块
{
System.out.println(p_Field);
System.out.println("父类–初始化块");
}
public Parent() { // 构造器
System.out.println("父类–构造器");
}
}
public class IntializeTurn extends Parent {
public static String s_StaticField = "子类–静态变量";
public String s_Field = "子类–变量";
static {
System.out.println(s_StaticField);
System.out.println("子类–静态初始化块");
}
// 初始化块
{
System.out.println(s_Field);
System.out.println("子类–初始化块");
}
public IntializeTurn(){// 构造器
System.out.println("子类–构造器");
}
public static void main(String[] args) {
new IntializeTurn();
}
}
我知道先静态后动态,先父类后子类。而构造代码块又优于构造器,但是对于静态变量和静态初始化块之间、变量和初始化块之间的先后顺序又是怎样呢?是否
静态变量总是先于静态初始化块,变量总是先于初始化块就被初始化了呢?
求大神们来探讨一下。
|
|