黑马程序员技术交流社区
标题:
类的初始化顺序中的问题。
[打印本页]
作者:
胡建彪
时间:
2012-10-27 17:11
标题:
类的初始化顺序中的问题。
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();
}
}
我知道先静态后动态,先父类后子类。而构造代码块又优于构造器,但是对于静态变量和静态初始化块之间、变量和初始化块之间的先后顺序又是怎样呢?是否
静态变量总是先于静态初始化块,变量总是先于初始化块就被初始化了呢?
求大神们来探讨一下。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2