顺序如下:
父类静态属性父类静态块
子类静态属性
子类静态块
父类属性默认值
子类属性默认值
父类属性
父类块
父类构造器
子类属性
子类块
子类构造器
遵循3个原则:
1.静态块>>块
2.成员变量赋值>>块赋值>>构造器赋值
3.父类的块>>父类构造器>>自身块>>自身构造器
public class Test extends Parent {
private static String str = "子类静态属性3";
static {
out.println(str);
out.println("子类静态块4");
}
private String string = "子类属性10";
{
out.println(string);
out.println("子类块11");
}
private boolean result = true;
public Test() {
super();
out.println("子类构造器12");
}
public String getSubString() {
return !result ? "子类属性默认值6" : string;
}
public static void main(String[] args) {
new Test();
}
}
class Parent {
private static String str = "父类静态属性1";
static {
out.println(str);
out.println("父类静态块2");
}
{
out.println(getParentString());
out.println(getSubString());
}
private String string = "父类属性7";
{
out.println(string);
out.println("父类块8");
}
private boolean result = true;
public Parent() {
super();
out.println("父类构造器9");
}
public String getSubString() {
return null;
}
public String getParentString() {
return !result ? "父类属性默认值5" : string;
}
}
println:
父类静态属性1
父类静态块2
子类静态属性3
子类静态块4
父类属性默认值5
子类属性默认值6
父类属性7
父类块8
父类构造器9
子类属性10
子类块11
子类构造器12