zoukankan      html  css  js  c++  java
  • java对象初始化顺序

    class Father {
        public Father() {
            System.out.println("父类无参构造方法");
        }
        static {
            System.out.println("父类静态代码块1");
        }
        private static int a = Help.fatherStaticMemberVarInit();
        static {
            System.out.println("父类静态代码块2");
        }
        {
            System.out.println("父类普通代码块1");
        }
        private int b = Help.fatherMemberVarInit();
        {
            System.out.println("父类普通代码块2");
        }
        public Father(int v) {
            System.out.println("父类带参构造方法");
        }
    }
     
    class Son extends Father {
        static {
            System.out.println("子类静态代码块1");
        }
        private static int a = Help.sonStaticMemberVarInit();
        static {
            System.out.println("子类静态代码块2");
        }
        {
            System.out.println("子类普通代码块1");
        }
        private int b = Help.sonMemberVarInit();
        {
            System.out.println("子类普通代码块2");
        }
        public Son() {
          // super(2018);
            System.out.println("子类构造方法");
        }
    }
     
    class Help {
        public static int fatherStaticMemberVarInit() {
            System.out.println("父类静态成员变量");
            return 0;
        }
        public static int fatherMemberVarInit() {
            System.out.println("父类普通成员变量");
            return 0;
        }
        public static int sonStaticMemberVarInit() {
            System.out.println("子类静态成员变量");
            return 0;
        }
        public static int sonMemberVarInit() {
            System.out.println("子类普通成员变量");
            return 0;
        }
    }
     
    public class Test {
        public static void main(String[] args) {
            Son son1 = new Son();
            System.out.println("===================");
            Son son2 = new Son();
        }
    }

    1. 父类静态代码块,父类静态成员变量(同级,按代码顺序执行)
    2. 子类静态代码块,子类静态成员变量(同级,按代码顺序执行)
    3. 父类普通代码块,父类普通成员变量(同级,按代码顺序执行)
    4. 父类构造方法
    5. 子类普通代码块,子类普通成员变量(同级,按代码顺序执行)
    6. 子类构造方法

    注意点:

    1. 静态内容只在类加载时执行一次,之后不再执行。
    2. 默认调用父类的无参构造方法,可以在子类构造方法中利用super指定调用父类的哪个构造方法。

    代码测试:

  • 相关阅读:
    转:理想主义终结年代的七种兵器
    基础地理空间框架
    coldplay 全集下载
    S40 用google sync同步通讯录(转)
    分享一个关于Steve Jobs演讲的分析
    转:我们时代的思想责任与尊严
    nginx 视频流
    vue 使用路由重复跳转同一页面
    批处理文件编写
    ZBB – ZERO Bug Bounce
  • 原文地址:https://www.cnblogs.com/When6/p/13685946.html
Copyright © 2011-2022 走看看