Java静态块、自由块及构造函数的执行顺序是什么(java,编程语言)

时间:2024-05-01 19:09:49 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    Java%E9%9D%99%E6%80%81%E5%9D%97%E3%80%81%E8%87%AA%E7%94%B1%E5%9D%97%E5%8F%8A%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E7%9A%84%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F%E6%98%AF%E4%BB%80%E4%B9%88

静态块格式:
static
{
}
静态块在类被加载的时候执行,又因为加载子类时,会预先加载父类,因此父类中如果有静态块,则最先执行。然后立即执行子类的静态块。
如果一个类中有多个静态块,则按照编码的先后顺序执行。
注:由于类只会被加载一次,因此每个静态块便只会执行一次。
自由块格式:
{
}
自由块在类被实例化时执行。
如果要实例化一个子类,那么他的构造函数会先实例化其父类。因此父类的自由块会先被执行,然后开始构造父类。父类的构造器执行完毕后,操作权返回给子类的构造器,此时开始执行子类的自由块。
然后开始构造子类。

以下为融合了父类静态块、子类静态块,父类自由块、子类自由块,父类构造函数、子类构造函数,this关键字、super关键字的一个例子,感觉很值得分析,值得记录。

packagecom.lsky.test;


publicclassFather{

privateintsum;

//父类中的静态块

static{

System.out.println("2010年新年快乐");

}

publicvoidfirst(inti){

sum=++i+sum++-1+i--;

System.out.println(sum);

}

//父类无参构造器

publicFather(){

System.out.println("美好的一天");

}

//含参数构造器

publicFather(Strings){

System.out.println("我们是学生");

}

//父类中的自由块

{

System.out.println("菩提本无树,明镜亦非台,本来无一物,何处惹尘埃");

}

}


packagecom.lsky.test;


publicclassSonextendsFather{

privateintsum;

privatestaticFatherfather;

//子类中含参构造器(含参构造函数)

publicSon(Fatherfather){

this();

father.first(8);

}

//子类中无参构造器(无参构造函数)

publicSon(){


this.punk(6);

}

publicvoidfirst(inti){

sum=sum+i++;

System.out.println(sum);

}

//子类中的静态块

static{

Fatherf=newSon();

f.first(4);

}

intpunk(intsum){

sum=sum;

returnsum;

}

//子类中的自由块

{

System.out.println("曾经沧海难为水,除却巫山不是云");

}

publicstaticvoidmain(Stringargsp[]){


Sonson=newSon(newSon());


}

}

//输出结果为:


2010年新年快乐

菩提本无树,明镜亦非台,本来无一物,何处惹尘埃

美好的一天

曾经沧海难为水,除却巫山不是云

4

菩提本无树,明镜亦非台,本来无一物,何处惹尘埃

美好的一天

曾经沧海难为水,除却巫山不是云

菩提本无树,明镜亦非台,本来无一物,何处惹尘埃

美好的一天

曾经沧海难为水,除却巫山不是云

8

本文:Java静态块、自由块及构造函数的执行顺序是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Python文本查询代码怎么写下一篇:

15 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18