• 静态代码块----->非静态代码块-------->构造函数


    AAAA.java

    解析: AAAA类的中包含静态代码块,构造代码块,构造方法

    package com.zhiyou100.static02;
    
    public class AAAA {
        static {
            System.out.println("AAAA 静态代码块");
        }
        {
            System.out.println("AAAA 构造代码块");
        }
        public AAAA() {
            System.out.println("AAAA 构造方法");
        }
    }

    BBBB.java

    解析: BBBB类的中包含静态代码块,构造代码块,构造方法,并且继承AAAA类

    package com.zhiyou100.static02;
    
    public class BBBB extends AAAA {
        static {
            System.out.println("BBBB 静态代码块");
        }
        {
            System.out.println("BBBB 构造代码块");
        }
    
        public BBBB() {
            System.out.println("BBBB 构造方法");
        }
    }

    CCCC.java

    解析: CCCC类的中包含静态代码块,构造代码块,构造方法,并且继承BBBB类

    package com.zhiyou100.static02;
    
    public class CCCC extends BBBB {
        static {
            System.out.println("CCCC 静态代码块");
        }
        {
            System.out.println("CCCC 构造代码块");
        }
    
        public CCCC() {
            System.out.println("CCCC 构造方法");
        }
    }

    Main.class 

    解释:主方法创建CCCC的对象

    package com.zhiyou100.static02;
    
    public class Main {

          static {
           System.out.println("main方法静态代码块");
        }

    public static void main(String[] args) {
            System.out.println("Main 方法开始");
            CCCC cccc = new CCCC();
            System.out.println("Main 方法结束");
        }
        
    }

    结果:

    分析: 运行main方法,首先会输出main方法的构造代码块,然后会输出"Main 方法开始",当我们创建CCCC类的时候,CCCC类继承BBBB类,BBBB又继承AAAA类,所以首先会运行AAAA类的静态代码块,然后输出BBBB的静态代码块,最后输出CCCC的静态代码块,因为静态代码块是在创建对象之前执行的,比构造方法块和构造方法之前执行,然后会创建CCCC类,但是CCCC类的构造方法中super()会调用BBBB类的构造方法,然后BBBB类的构造方法通过默认的super调用AAAA类的构造方法,但是在调用AAAA类的构造方法之前,会调用构造代码块,所以依次类推,当AAAA类的构造代码块和构造方法调用之后,会调用BBBB类的构造代码块和构造方法,最后调用CCCC类的构造代码块和构造方法,当对象创建成功以后,最后main方法结束

  • 相关阅读:
    【ES6】数组的扩展——扩展运算符
    【ES6】函数的扩展
    菜鸡程序员是如何写代码的?
    我是技术总监,我出来求职,竟然找不到工作!
    为什么互联网公司天天都在招人?
    这个立冬,我线下面基了一位TMD高级专家,太牛逼了!
    太可怕了!有些码农为啥写代码,写到监狱里去了?
    56岁潘石屹生日当天宣布要学编程语言Python,网友:地产商来抢码农饭碗了!
    如何写出让同事无法维护的代码?
    hdu 1037 Keep on Truckin'
  • 原文地址:https://www.cnblogs.com/wangxiucai/p/12530192.html
Copyright © 2020-2023  润新知