静态块、自由块及构造函数的执行顺序
来源:互联网 发布:芜湖开淘宝企业店铺 编辑:程序博客网 时间:2024/06/07 06:01
静态块格式:
static
{
}
静态块在类被加载的时候执行,又因为加载子类时,会预先加载父类,因此父类中如果有静态块,则最先执行。然后立即执行子类的静态块。
如果一个类中有多个静态块,则按照编码的先后顺序执行。
注:由于类只会被加载一次,因此每个静态块便只会执行一次。
自由块格式:
{
}
自由块在类被实例化时执行。
如果要实例化一个子类,那么他的构造函数会先实例化其父类。因此父类的自由块会先被执行,然后开始构造父类。父类的构造器执行完毕后,操作权返回给子类的构造器,此时开始执行子类的自由块。
然后开始构造子类。
然后开始构造子类。
- package com.lsky.test;
- public class Father {
- private int sum;
- //父类中的静态块
- static{
- System.out.println("2010年新年快乐");
- }
- public void first(int i){
- sum=++i+sum++-1+i--;
- System.out.println(sum);
- }
- //父类无参构造器
- public Father(){
- System.out.println("美好的一天");
- }
- //含参数构造器
- public Father(String s){
- System.out.println("我们是学生");
- }
- //父类中的自由块
- {
- System.out.println("菩提本无树,明镜亦非台,本来无一物,何处惹尘埃");
- }
- }
- package com.lsky.test;
- public class Son extends Father {
- private int sum;
- private static Father father;
- //子类中含参构造器(含参构造函数)
- public Son(Father father){
- this();
- father.first(8);
- }
- //子类中无参构造器(无参构造函数)
- public Son(){
- this.punk(6);
- }
- public void first(int i){
- sum=sum+i++;
- System.out.println(sum);
- }
- //子类中的静态块
- static{
- Father f=new Son();
- f.first(4);
- }
- int punk(int sum){
- sum=sum;
- return sum;
- }
- //子类中的自由块
- {
- System.out.println("曾经沧海难为水,除却巫山不是云");
- }
- public static void main(String argsp[]){
- Son son=new Son(new Son());
- }
- }
- //输出结果为:
- 2010年新年快乐
- 菩提本无树,明镜亦非台,本来无一物,何处惹尘埃
- 美好的一天
- 曾经沧海难为水,除却巫山不是云
- 4
- 菩提本无树,明镜亦非台,本来无一物,何处惹尘埃
- 美好的一天
- 曾经沧海难为水,除却巫山不是云
- 菩提本无树,明镜亦非台,本来无一物,何处惹尘埃
- 美好的一天
- 曾经沧海难为水,除却巫山不是云
- 8
- 静态块、自由块及构造函数的执行顺序
- 静态块、自由块及构造函数的执行顺序
- 静态代码块,构造代码块,构造函数之间的差别及先后执行顺序
- 静态代码块,代码块,构造函数的执行顺序
- java静态块,普通块,构造函数的执行顺序
- java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
- java一般代码块,构造块,构造函数,静态代码块的执行顺序实践
- Java 静态块 、构造块、构造函数执行顺序
- JAVA 构造函数,静态块,非静态块执行顺序
- 静态代码块,构造代码块,普通代码块-三者的执行顺序及区别
- static静态块、构造函数。主方法的执行顺序!
- java中代码块的执行顺序--静态代码块,构造器,普通代码块,构造块,main主函数
- Java 静态语句块、语句块、构造函数执行顺序
- Java 静态语句块、语句块、构造函数执行顺序
- Java 静态语句块、语句块、构造函数执行顺序
- java 静态代码块 代码块 构造函数执行顺序
- 静态语句块,语句块,构造函数执行顺序
- Java 静态语句块、语句块、构造函数执行顺序
- Java 文件上传组件 Apache Commons FileUpload 应用
- database scanner
- 当EditText是多行文本时, 光标如何设置在从左上角
- 开篇
- C++程序设计实验报告(七十)---第十三周任务二
- 静态块、自由块及构造函数的执行顺序
- 【随机化贪心】【动态规划】【NOI2010】成长快乐
- 获取文件名的方式
- ORA-00257: archiver error. Connect internal only, until freed.
- JAVA线程池的原理及几类线程池的介绍
- 使用Struts1.2 Validator验证框架的简单例子
- 用java实现管程,解决进程互斥问题
- CSS居中的常用方法
- ubuntu下安装飞信