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

    代码测试:

  • 相关阅读:
    centos7 go ENV 部署
    sock5客户端解密数据流
    sock5协议转换http协议工具polipo使用笔记(Centos7)
    【转】nc 使用说明
    前端移动框架Framework7入门
    Ext.NET-WebForm之TreePanel组件
    在VS2019创建WebForm程序,开个箱
    web认证
    ABP框架是怎么一回事呢?
    C#4并行计算
  • 原文地址:https://www.cnblogs.com/When6/p/13685946.html
Copyright © 2011-2022 走看看