A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡建彪 黑马帝   /  2012-10-27 17:11  /  836 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();        
        }
}
我知道先静态后动态,先父类后子类。而构造代码块又优于构造器,但是对于静态变量和静态初始化块之间、变量和初始化块之间的先后顺序又是怎样呢?是否
静态变量总是先于静态初始化块,变量总是先于初始化块就被初始化了呢?
求大神们来探讨一下。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马