zoukankan      html  css  js  c++  java
  • 类里面的大括号{}加载顺序

    一、序言

      前几天遇到了一个类加载的顺序问题,废话不多说,直接上代码

    二、问题

      上代码:

    package com.hz.test;
    
    public class Demo2 {
        public static void main(String[] args) {
            new Son();
            new Son();
        }
    }
    class Father{
        //public static int i =0;
        public Father(){
            System.out.println("3");
        }
        static{
            //System.out.println(i);
            System.out.println("1");
        }
        {
            System.out.println("2");
        }
    }
    class Son extends Father{
        public Son(){
            System.out.println("4");
        }
        static{
            System.out.println("5");
        }
        {
            System.out.println("6");
        }
    }

    三、问题解决

      1、大括号 {}是类加载的时候加载,每次类加载都会进行加载,而且是构造方法之前,static代码块之后进行加载的。

      2、加载的时候,先加载的是父类的静态代码块,和子类的静态代码块,然后再是父类{}的加载,然后就是父类的构造器的加载,然后就是子类的{}的加载,子类的构造器的加载。

        父类static块 > 子类static块 > 父类的大括号{} >父类的构造方法 > 子类的大括号{} >子类的构造方法

      3、顺序为  1 5 2 3 6 4 2 3 6 4

  • 相关阅读:
    vue项目中使用axios上传图片等文件
    es6入门set和map
    自定义组件实现双向数据绑定
    vue watch详细用法
    bind,call,applay的区别
    前端路由两种模式:hash、history
    jsonp封装成promise
    正则元字符理解2
    webpack配置
    vuex的几个细节
  • 原文地址:https://www.cnblogs.com/lixiaochao/p/6527408.html
Copyright © 2011-2022 走看看