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

    代码测试:

  • 相关阅读:
    7人脸识别
    1图片视频文件操作基础
    3直方图与二值化,图像梯度
    6模板匹配(人脸匹配案例)
    基础习题
    碎片知识点整理
    详解:MySQL数据表损坏的正确修复方案
    前端开发:模块化 — 高效重构
    分享几个基于jQuery不错的前端相册展示插件代码
    程序员编程10年的心得和体会
  • 原文地址:https://www.cnblogs.com/When6/p/13685946.html
Copyright © 2011-2022 走看看