• 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
    子类构造方法!
  • 相关阅读:
    vue项目中使用mockjs模拟接口返回数据
    Node.js:Express 框架
    Node.js:Web模块、文件系统
    Node.js:get/post请求、全局对象、工具模块
    Node.js:常用工具、路由
    echarts使用记录(二)legend翻页,事件,数据集,设置y轴最大/小值,让series图形从右侧出往左移动
    Node.js:模块系统、函数
    ElementUI表单验证使用
    高级程序员职责
    Git:fatal: The remote end hung up unexpectedly
  • 原文地址:https://www.cnblogs.com/hbxZJ/p/15515422.html
Copyright © 2020-2023  润新知