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指定调用父类的哪个构造方法。

    代码测试:

  • 相关阅读:
    1.23学习总结:文件流
    vue-router重写push方法,解决相同路径跳转报错,解决点击菜单栏打开外部链接
    手把手教Electron+vue,打包vue项目,打包成桌面程序。
    后台获取的map集合封装json
    VUE同级组件之前方法调用
    字节跳动今日头条-抖音小程序序html富文本显示解决办法
    别总写代码,这130个网站比涨工资都重要
    vue 组件之间的自定义方法互相调用
    swiper轮播图出现疯狂抖动(小程序)
    vue通过地址下载文件
  • 原文地址:https://www.cnblogs.com/When6/p/13685946.html
Copyright © 2011-2022 走看看