美文网首页
2020-02-01Java程序的初始化顺序

2020-02-01Java程序的初始化顺序

作者: Yangxy_Lazy | 来源:发表于2020-02-01 18:12 被阅读0次

初始化顺序:

  • 对于一个单独的类而言:

    • 静态部分(静态成员变量 + 静态代码块):按照定义顺序进行初始化
    • 普通成员(普通成员变量 + 普通代码块):按照定义顺序进行初始化
    • 构造函数

  • 对于有父类而言:

  • 父类静态部分
  • 子类静态部分
  • 父类普通成员
  • 父类构造器
  • 子类普通成员
  • 子类构造器

  • 由于静态变量在普通成员之前初始化,所以可以在静态变量定义顺序之前使用。

栗子:

class BaseTest {

    public int a = 21;

    {
        System.out.println("父类普通代码块: " + a);

    }

    public static int b = 22;

    static {
        System.out.println("父类静态代码块: " + b);
    }

    public BaseTest() {
        System.out.println("父类构造器");
    }
}


public class Test extends BaseTest {

    public int a = 23;

    {
        System.out.println("子类普通代码块: " + a);

    }

    public static int b = 24;

    static {
        System.out.println("子类静态代码块: " + b);
    }

    public Test() {
        System.out.println("子类构造器");

    }

    public static void main(String[] args) {
        new Test();
    }
}

运行结果:
父类静态代码块: 22
子类静态代码块: 24
父类普通代码块: 21
父类构造器
子类普通代码块: 23
子类构造器

相关文章

  • 2020-02-01Java程序的初始化顺序

    初始化顺序: 对于一个单独的类而言:静态部分(静态成员变量 + 静态代码块):按照定义顺序进行初始化普通成员(普通...

  • 调整驱动加载顺序

    Linux内核驱动程序初始化顺序的调整(1) 如何调整Linux内核启动中的驱动初始化顺序

  • Java程序初始化顺序

    Java程序初始化顺序 首先来看一段代码 输出顺序应该是什么样的呢? 根据上图可知:在程序初始化时,先会初始化父类...

  • OpenGl ES 3.0基本流程

    OpenGl 基本流程 初始化数据和着色器渲染程序 初始化顶点数据,注意设置字节顺序为本地操作系统顺序/** ...

  • Java程序初始化顺序

    今天在课上复习了Java的初始化顺序,一直有点疑惑,搞不明白,所以打算写下来,记录一下。 先说一下Java...

  • 类初始化过程

    初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 2.然后,...

  • 自我适用程序框架学习整理(持续更新)

    根据C语言程序的凡人执行顺序,分成三个区域:进入主程序前的区域,主程序的初始化区域,主程序的循环区域。主程序前的区...

  • [转]Effective C++学习笔记:初始化列表中成员列出的

    类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行;...

  • C++对象模型5——对象的构造/析构

    对象的构造/析构顺序 初始化虚基类,按照继承顺序,从左到右,从最深到最浅。 初始化按照继承顺序初始化父类,如果父类...

  • 顺序表的操作

    顺序表的操作 这里先定义个顺序表 顺序表初始化 定义bool类型函数 initList() ,初始化成功为true...

网友评论

      本文标题:2020-02-01Java程序的初始化顺序

      本文链接:https://www.haomeiwen.com/subject/azyxxhtx.html