美文网首页
Java实例初始化的顺序

Java实例初始化的顺序

作者: kkyeer | 来源:发表于2019-08-06 15:55 被阅读0次

Java静态变量、inline初始化的实例变量,显示与隐式调用构造器的执行顺序

  1. 所有依赖路径的类(包括父类与子类)加载,类变量初始化和静态代码块执行,注意一个类只会被加载一次,顺序如下:
    1. 加载父类,其中类加载过程中类变量和静态变量的顺序如下:
      1. 静态变量
      2. 静态代码块
    2. 加载子类,顺序同上
  2. 实例变量初始化与构造器调用,先执行父类,再执行子类,注意每次新建类的实例时都会完整执行一遍
    1. 父类实例变量初始化与构造器
      1. 父类inline实例变量初始化过程
      2. 父类构造器,如果子类被调用到的构造器中通过super()或者super(param)显式调用了父构造器,则执行被调用的构造器,否则执行空构造器
    2. 子类实例变量初始化与构造器
      1. 子类inline实例变量初始化过程
      2. 子类构造器调用,被调用哪个就执行哪个,除非显式调用this(),否则不会调用子类的空构造器

因此,反直觉的是,反而是调用到的子类的构造方法,最后被执行

相关文章

  • JAVA实例初始化顺序

    存在继承的情况下,初始化顺序为: 父类(静态变量、静态语句块)子类(静态变量、静态语句块)父类(实例变量、普通语句...

  • Java实例初始化的顺序

    Java静态变量、inline初始化的实例变量,显示与隐式调用构造器的执行顺序 所有依赖路径的类(包括父类与子类)...

  • Java初始化顺序

    Java初始化顺序:①类变量、类方法>②(父类代码)>③实例变量>④构造器当一个类要实例化时,static变量和方...

  • Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造

    Java初始化顺序1在new B一个实例时首先要进行类的装载。(类只有在使用New调用创建的时候才会被java类装...

  • Java初始化顺序

    layout: post title: Java初始化顺序 categories: JAVA descriptio...

  • 自整理1

    1.java类的实例的初始化过程: 静态变量->静态代码块->main->实例变量->实例初始化块->构造器 加载...

  • 剖析java对象初始化顺序问题

    Dzone阅读了一篇关于java对象实例初始化顺序的有趣文章。说它有趣,是因为作者使用了一种并不太推荐的编码风格,...

  • Kotlin笔记

    Kotlin与Java的差异 1. 对象的初始化时的顺序 在java中,初始化代码块 -> 构造函数 在kotli...

  • Java初始化顺序

    Java初始化的顺序如下: 静态变量和静态初始化块之间没有先后关系, 遵循代码的先后顺序, 写在前面就先初始化, ...

  • 剖析一个java对象初始化顺序问题

    今天我在Dzone阅读了一篇关于java对象实例初始化顺序的有趣文章。说它有趣,是因为作者使用了一种并不太推荐的编...

网友评论

      本文标题:Java实例初始化的顺序

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