黑马程序员技术交流社区

标题: 类的初始化顺序中的问题。 [打印本页]

作者: 胡建彪    时间: 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