您的位置:首页 > 编程语言 > Java开发

Java中构造函数、构造代码块、静态代码块等的执行顺序问题

2014-04-16 14:41 651 查看
//验证一个有父类的java对象的初始化顺序

class InitFu{

public static String staticFuField = "父类静态变量";

public String field="父类成员变量";

public int f;

static{

System.out.println(staticFuField);

System.out.println("父类静态初始化块");

}// 静态初始化块

{

System.out.println("父类成员变量默认值:"+f);

System.out.println(field);

System.out.println("父类构造代码块");

}// 初始化块

InitFu(){

System.out.println("Fu类初始化");

}

}

public class InitStatic extends InitFu

{

public static String staticField = "子类静态变量";// 静态变量

public String field = "子类成员变量";// 变量

public int z;

static{

System.out.println(staticField);

System.out.println("子类静态初始化块1,位置在前");

}// 静态初始化块

{

System.out.println("子类成员变量还是默认值:"+z);

System.out.println(field);

System.out.println("子类构造代码块1,位置在前");

}// 初始化块

static{

System.out.println("子类静态初始化块2,位置在后");

}// 静态初始化块

public InitStatic() {

System.out.println("子类构造函数");

}// 构造函数

public static void main(String[] args) {

new InitStatic();

}

{

//System.out.println(field);

System.out.println("子类构造代码块2,位置在后");

}// 初始化块

}

运行结果是:

父类静态变量

父类静态初始化块

子类静态变量

子类静态初始化块1,位置在前

子类静态初始化块2,位置在后

父类成员变量默认值:0

父类成员变量

父类构造代码块

Fu类初始化

子类成员变量还是默认值:0

子类成员变量

子类构造代码块1,位置在前

子类构造代码块2,位置在后

子类构造函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐