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

java继承关系中静态代码块、非静态代码块的执行顺序

2017-05-24 22:29 323 查看
class Parent {
private String name = setName();

private static Parent p = new Parent("父类");

public Parent() {

}

public Parent(String name) {
System.out.println("父类构造器");
this.name = name;
}

/**
* @return
*/
protected String setName() {
System.out.println("父类非static变量进行赋值");
return "aaa";
}

static {
p = new Parent("ghl");
System.out.println("父类static");
}

public void getName() {
System.out.println(name);
}

public void eat() {
System.out.println("父类方法");
}
}

class Child extends Parent{
private String name = setName();

private static Child c = new Child("子类");

public Child() {

}

public Child(String name) {
super(name);
System.out.println("子类构造器");
this.name = name;
}

protected String setName() {
System.out.println("子类非static变量进行赋值");
return "bbb";
}

static {
System.out.println("子类static");
}

public void getName() {
System.out.println(name);
}

public void eat() {
System.out.println("子类方法");
}

public static void main(String[] args) {
Child c = new Child();
}
}


运行结果:

父类非static变量进行赋值

父类构造器

父类非static变量进行赋值

父类构造器

父类static

子类非static变量进行赋值

父类构造器

子类非static变量进行赋值

子类构造器

子类static

子类非static变量进行赋值

子类非static变量进行赋值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java static
相关文章推荐