Java基础-类成员初始化顺序
Java基础-类成员初始化顺序
陶邦仁 发表于5年前
Java基础-类成员初始化顺序
  • 发表于 5年前
  • 阅读 329
  • 收藏 6
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

类成员包括:

静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:

image

运行以上代码,我们会得到如下的输出结果:

1、静态变量

2、静态初始化块

3、变量

4、初始化块

5、构造器

这与上文中说的完全符合。那么对于继承情况下又会怎样呢?直接给出测试结果:

1、父类--静态变量

2、父类--静态初始化块

3、子类--静态变量

4、子类--静态初始化块

5、父类--变量

6、父类--初始化块

7、父类--构造器

8、子类--变量

9、子类--初始化块

10、子类--构造器

现在,结果已经不言自明了。大家可能会注意到一点,那就是,并不是父类完全初始化完毕后才进行子类的初始化,实际上子类的静态变量和静态初始化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成了

那么对于静态变量和静态初始化块之间、变量和初始化块之间的先后顺序又是怎样呢?是否静态变量总是先于静态初始化块,变量总是先于初始化块就被初始化了呢?实际上这取决于它们在类中出现的先后顺序。我们以静态变量和静态初始化块为例来进行说明。

image

运行上面的代码,会得到如下的结果:

1、Test--A

2、静态初始化块

3、Test--B

大家可以随意改变变量a、变量b以及静态初始化块的前后位置,就会发现输出结果随着它们在类中出现的前后顺序而改变,这就说明静态变量和静态初始化块是依照他们在类中的定义顺序进行初始化的。同样,变量和初始化块也遵循这个规律。

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1528
博文 388
码字总数 1483822
×
陶邦仁
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: