博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础-类成员初始化顺序
阅读量:5864 次
发布时间:2019-06-19

本文共 710 字,大约阅读时间需要 2 分钟。

hot3.png

类成员包括:

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

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

1、静态变量

2、静态初始化块

3、变量

4、初始化块

5、构造器

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

1、父类--静态变量

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

3、子类--静态变量

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

5、父类--变量

6、父类--初始化块

7、父类--构造器

8、子类--变量

9、子类--初始化块

10、子类--构造器

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

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

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

1、Test--A

2、静态初始化块

3、Test--B

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

转载于:https://my.oschina.net/xianggao/blog/91826

你可能感兴趣的文章
[samtools] 文本查看语法,浏览SNP/INDEL位点
查看>>
[samtools] sam格式与bam格式互换,提取未匹配reads,转为fastq
查看>>
codeigniter nginx rewrite规则配置【转】
查看>>
查找对应属性数量
查看>>
EOS开发语言和石墨烯技术介绍
查看>>
Hibernate--------八大类HQL查询集合
查看>>
robotframwork的WEB功能测试(二)—登录
查看>>
12.28jQuery 的取值赋值
查看>>
C++回调:利用Sink
查看>>
各种sqlite管理工具
查看>>
切片练习
查看>>
退信原因分析及解决办法
查看>>
项目: Zabbix监控搭建部署
查看>>
华为2016编程题
查看>>
APMServ 5.2.6.Apache启动失败,请检查相关配置。2.MySQL5.1启动失败的解决方法
查看>>
extJs学习基础4 Ext.each的用法
查看>>
Linux分区
查看>>
(转)IntelliJ IDEA java项目导入jar包,打jar包
查看>>
软件质量与测试--第六周作业 软件测试和评估
查看>>
实验4 颜色、字符串资源的使用
查看>>