• Java对象初始化顺序


    public class Father {
    
        static final String STATIC_FIELD_01 = getFatherField("STATIC_FIELD_01");
    
        private String field01 = getMemberFatherField("field01");
    
        public Father() {
            System.out.println("父类构造方法!");
        }
    
        static {
            System.out.println("父类静态代码块!");
        }
    
        static final String STATIC_FIELD_02 = getFatherField("STATIC_FIELD_02");
    
        static String getFatherField(String str) {
            System.out.println("父类静态成员变量初始化-" + str);
            return str;
        }
    
        {
            System.out.println("父类代码块!");
        }
    
        private String field02 = getMemberFatherField("field02");
    
        String getMemberFatherField(String str) {
            System.out.println("父类成员变量初始化-" + str);
            return str;
        }
    
        static class Son extends Father {
    
            static final String STATIC_FIELD_01 = getSonField("STATIC_FIELD_01");
    
            private String field01 = getMemberSonField("field01");
    
            public Son() {
                System.out.println("子类构造方法!");
            }
    
            static {
                System.out.println("子类静态代码块!");
            }
    
            static final String STATIC_FIELD_02 = getSonField("STATIC_FIELD_02");
    
            static String getSonField(String str) {
                System.out.println("子类静态成员变量初始化-" + str);
                return str;
            }
    
            {
                System.out.println("子类代码块!");
            }
    
            private String field02 = getMemberSonField("field02");
    
            String getMemberSonField(String str) {
                System.out.println("子类成员变量初始化-" + str);
                return str;
            }
        }
    
        public static void main(String[] args) {
           Son son = new Son();
           System.out.println("-----------");
           Son s1 = new Son();
        }
    }

    输出结果

    父类静态成员变量初始化-STATIC_FIELD_01
    父类静态代码块!
    父类静态成员变量初始化-STATIC_FIELD_02
    子类静态成员变量初始化-STATIC_FIELD_01
    子类静态代码块!
    子类静态成员变量初始化-STATIC_FIELD_02
    父类成员变量初始化-field01
    父类代码块!
    父类成员变量初始化-field02
    父类构造方法!
    子类成员变量初始化-field01
    子类代码块!
    子类成员变量初始化-field02
    子类构造方法!
    -----------
    父类成员变量初始化-field01
    父类代码块!
    父类成员变量初始化-field02
    父类构造方法!
    子类成员变量初始化-field01
    子类代码块!
    子类成员变量初始化-field02
    子类构造方法!
  • 相关阅读:
    Java多线程之赛跑游戏(含生成exe文件)
    JavaSE之绘制菱形
    JavaSE项目之员工收录系统
    深度解析continue,break和return
    如何查看yum安装路径
    转载 linux umount 时出现device is busy 的处理方法--fuser
    linux安装扩展总结
    linux 编译安装amqp
    vmware 实现linux目录映射window本地目录
    yaf学习之——生成yaf示例框架
  • 原文地址:https://www.cnblogs.com/hbxZJ/p/15515422.html
Copyright © 2020-2023  润新知