美文网首页
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实例初始化的顺序

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