zoukankan      html  css  js  c++  java
  • 静态块、自由块及构造函数的执行顺序

         静态块和静态变量在类的加载时被执行;加载子类时,会预先加载父类,因此父类中如果有静态块,则最先执行之,然后立即执行子类的静态块;
    如果一个类中有多个静态块,则按照编码的先后顺序执行

     

    注:因为一个类只会被加载一次,所以每个静态块只会执行一次

     

    自由块格式(又称“普通块”):
    {
         // statements;
    }

    自由块在类被实例化时执行

     

    如果要实例化一个子类,那么它的构造函数会先实例化其父类。因此父类的自由块会先被执行,然后开始构造父类;父类的构造器执行完毕后,操作权返回给子类的构造器,此时开始执行子类的自由块,然后开始构造子类。

     

    执行的顺序依次为:
    父类静态块 → 子类静态块 → 父类自由块 → 父类构造函数 → 子类自由块 → 子类构造函数

     

    /*
     * Output:
        A
        C
        B
        D
        E
     */
    
    class ClassA {
    
        public ClassA() 
        {
    
            System.out.println("D");
    
        }
    
        {
    
            System.out.println("B");
    
        }
    
    }
    
    class Base extends ClassA {
    
        int i;
    
        public Base() 
        {
    
            i = 10;
    
            System.out.println("E");
    
        }
    
        static 
        {
    
            System.out.println("A");
    
        }
    
    }
    
    public class ClassB extends Base {
    
        public static void main(String[] args) {
    
            new ClassB();
    
        }
    
        static 
        {
    
            System.out.println("C");
    
        }
    
    }
  • 相关阅读:
    实验六 进程基础
    实验五 shell脚本编程
    实验四 Linux系统搭建C语言编程环境
    实验三 Linux系统用户管理及VIM配置
    实验二 Linux系统简单文件操作命令
    实验一 Linux系统与应用准备
    实验八 进程间的通信
    实验七 信号
    实验六 进程基础
    实验五 shell脚本编程
  • 原文地址:https://www.cnblogs.com/bluestorm/p/2638705.html
Copyright © 2011-2022 走看看