java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题

本文详细解析了Java中对象初始化的过程,包括静态成员变量与动态成员变量的定义与初始化顺序,以及涉及继承时的初始化流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


详细见http://blog.youkuaiyun.com/shijinupc/article/details/7692315

  1.  几大原则 
  2.          * 一、静态成员变量(Static) 
  3.          *  1、静态成员变量为类变量,所有对象共享同一内存空间 
  4.          *  2、静态成员变量的声明和定义仅在首次加载类时执行一次 
  5.          *  3、首次加载类时首先对所有静态成员变量根据类型默认赋初值,然后再对有右值的附右值 
  6.          * 二、静态初始块 
  7.          *  1、静态初始化块仅在首次加载类时执行一次 
  8.          * ······多个静态成员变量与静态始化快参照出现顺序先后执行······ 
  9.          * 三、动态成员变量 
  10.          *  1、动态成员变量定义在每次实例化对象时在构造函数之前执行 
  11.          * 四、动态初始化块 
  12.          *  1、动态初始化块在每次实例化对象时在构造函数之前执行 
  13.          * ······多个动态成员变量与动态初始化块参照出现顺序先后执行······ 
  14.          * 总结:总的来说,在不涉及继承的前提下,当首次加载类时,按照如下顺序执行 
  15.          *  1、按照出现顺序先后执行静态成员变量定义与静态初始化块 
  16.          *  2、按照出现顺序先后执行动态成员变量定义与动态初始化块 
  17.          *  3、执行构造函数 
  18.          *  再次实例化对象时只执行第2、3步即可 
  19.          *  
  20.          * ············成员变量与定义与初始化块先于构造函数执行········· 
  21.          * 五、当涉及到继承时,按照如下顺序执行 
  22.          *  1、执行父类的静态成员变量定义与静态初始化块,执行子类的静态成员变量定义与静态初始化块 
  23.          *  2、执行父类的非静态成员变量定义与动态初始化块,执行父类构造方法 
  24.          *  3、执行子类的非静态成员变量定义与动态初始化块,执行子类构造方法 
  25.          * 另:父类构造方法中用到的方法如果已被子类重写,那么在构造子类对象时在调用父类构造函数中使用子类重写的方法 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值