静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。
1 父类的静态代码块 2 子类的静态代码块 3 父类的构造函数 4 子类的构造函数
需要注意的地方:
1 子类的 构造函数 默认是 调用 父类的 无参构造函数。
2 如果 父类没有无参构造函数,则子类构造函数必须显式调用父类的构造函数。
如父类public Parent(String name){}
此时,子类中应该是这样调用public Child(String str){super(str);}
如父类public Parent()无参型的
此时,子类中应该这样调用public Child(String str){super();//也可以不写,默认的就是会调用super();}
一个例子:
Java代码
public class Parent {
static String name = "hello";
{
System.out.println("parent block");
}
static {
System.out.println("parent static block");
}
public Parent() {
System.out.println("parent constructor");
}
}
Java代码
class Child extends Parent {
static String childName = "hello";
{
System.out.println("child block");
}
static {
System.out.println("child static block");
}
public Child() {
System.out.println("child constructor");
}
}
Java代码
public class StaticIniBlockOrderTest {
public static void main(String[] args) {
new Child();
System.out.println("==============");
new Child();
}
}
执行结果为:
parent static block
child static block
parent block
parent constructor
child block
child constructor
==============
parent block
parent constructor
child block
child constructor