博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态块、自由块及构造函数的执行顺序
阅读量:4652 次
发布时间:2019-06-09

本文共 878 字,大约阅读时间需要 2 分钟。

     静态块和静态变量在类的加载时被执行;加载子类时,会预先加载父类,因此父类中如果有静态块,则最先执行之,然后立即执行子类的静态块;

如果一个类中有多个静态块,则按照编码的先后顺序执行

 

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

 

自由块格式(又称“普通块”):

{
     // 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");    }}

转载于:https://www.cnblogs.com/bluestorm/archive/2012/08/14/2638705.html

你可能感兴趣的文章
【XSY1841】Intervals
查看>>
Sublime Text 2 使用心得
查看>>
Django开发必知必会
查看>>
文件和二进制数据的操作
查看>>
静态链表
查看>>
Swift 之Carthage
查看>>
Java 反射机制
查看>>
Unity3D 原生Android结合UnityPlayerActivity开发遇到的问题
查看>>
表单元素及其格式
查看>>
洛谷 P2257 YY的GCD
查看>>
time模块
查看>>
Oracle Scheduler - Job and Argument
查看>>
同时update多张表的语句 -- 梦中的面试
查看>>
STM32f103C8T6 Bootloader设计(转)
查看>>
超声波测距温度补偿
查看>>
mysql级联删除
查看>>
面向对象(上)
查看>>
EFCodeFirst安装失败 解决规划
查看>>
各种域名解析的区别
查看>>
centos6.4搭建apache+mysql+php环境 ...
查看>>