简单了解Java类成员初始化顺序
这篇文章主要介绍了简单了解Java类成员初始化顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
类中包含7中成员:
1、静态变量static
2、final静态常量finalstatic
3、静态代码块static{}//多个代码块顺序执行
4、普通变量
5、普通代码块{}//多个代码块顺序执行
6、构造方法
7、普通方法
类中成员初始化方式(排出7):
非继承类中:
- 首先执行1/2/3,执行顺序为顺序执行(谁在前先执行谁)。
- 之后执行4/5,执行顺序为顺序执行(谁在前先执行谁)。
- 然后执行6(默认执行无参构造方法)。
继承类中:
- 首先执行父类1/2/3,执行顺序为顺序执行(谁在前先执行谁),
- 随即执行子类1/2/3,执行顺序为顺序执行(谁在前先执行谁)。
- 之后执行父类4/5,执行顺序为顺序执行(谁在前先执行谁),
- 然后执行父类6(如果子类没有调用父类构造方法,则默认调用父类默认无参构造方法)。
- 随即执行子类4/5,执行顺序为顺序执行(谁在前先执行谁)。
- 然后执行子类6。
代码:
*每个属性设置断点,启动后可以观察执行顺序。
父类:
packagecom.lookcoder.haircutmember.vo;
publicclassTRoleVoAFather{
privateStringnameFather="12";
privateIntegerageFather=1;
privateintageiFather=1;
{
System.out.println("fatherdefualtmethodblock2");
}
privateStringdefualtInitFather=getDefaultInit();
{
System.out.println("fatherdefualtmethodblock1");
}
privateStringgetDefaultInit(){
return"fatherdefaultinit";
}
//----------------------------------------------------------------------------
privatestaticStringaFather="2";
privatefinalstaticStringaaFather=getFinalStatic();
static{
System.out.println("fatherdefaultstaticmethod2");
}
privatestaticIntegerbFather=1;
static{
System.out.println("fatherdefaultstaticmethod1");
}
privatefinalstaticIntegerbbFather=2;
privatestaticStringgetFinalStatic(){
return"fatherfinalstaticaa";
}
privatefinalstaticBooleanbo=true;
//----------------------------------------------------------------------------
TRoleVoAFather(){
System.out.println("fatherdefaultconstruct");
}
TRoleVoAFather(Stringname,Integerage){
this.nameFather=name;
this.ageFather=age;
}
//----------------------------------------------------------------------------
publicvoidabc(){
System.out.println("abcmethod!");
}
}
子类:
packagecom.lookcoder.haircutmember.vo;
publicclassTRoleVoAextendsTRoleVoAFather{
privateintagei=1;
{
System.out.println("defualtmethodblock2");
}
privateIntegerage=1;
{
System.out.println("defualtmethodblock1");
}
privateStringname="12";
privateStringdefualtInit=getDefaultInit();
privateStringgetDefaultInit(){
return"defaultinit";
}
//----------------------------------------------------------------------------
privatefinalstaticIntegerbb=2;
privatefinalstaticStringaa=getFinalStatic();
privatestaticStringgetFinalStatic(){
return"finalstaticaa";
}
privatefinalstaticBooleanbo=true;
privatestaticStringa="2";
privatestaticIntegerb=1;
static{
System.out.println("defaultstaticmethod2");
}
static{
System.out.println("defaultstaticmethod1");
}
privatestaticIntegerb11=1;
//----------------------------------------------------------------------------
TRoleVoA(){
System.out.println("defaultconstruct");
}
TRoleVoA(Stringname,Integerage){
super(name,age);
this.name=name;
this.age=age;
}
//----------------------------------------------------------------------------
publicvoidshowDefault(){
System.out.println("showdefaultmethod!");
}
}
启动类:
packagecom.lookcoder.haircutmember.vo;
publicclassTRoleVoARun{
publicstaticvoidmain(String[]args){
TRoleVoAtRoleVo=newTRoleVoA("123",123);
tRoleVo.showDefault();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。