zoukankan      html  css  js  c++  java
  • 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
    子类构造方法!
  • 相关阅读:
    cookie,session和cache关于缓存的使用和区别
    CPU利用率与Load Average的区别
    进程和线程
    当load飙升时问题排查思路
    动态查看JVM内存的工具
    springcloud在 repository层通过sql语句实现查询功能
    java ==与equals的区别
    java 位运算(经常用到)
    api document 文档撰写实例
    markdown 语法案例
  • 原文地址:https://www.cnblogs.com/hbxZJ/p/15515422.html
Copyright © 2011-2022 走看看