总结了一下Java父类与子类中静态代码块、构造代码块、构造函数的执行顺序,直接上代码。
`package codeBlock;
public class F {
static{
System.out.println("父类静态代码块");
}
{
System.out.println("父类构造代码块");
}
public F(){
System.out.println("父类无参构造方法");
}
public F(String name){
System.out.println("父类有参构造方法");
}
}
package codeBlock;
public class C extends F{
static{
System.out.println("子类静态代码块");
}
{
System.out.println("子类构造代码块");
}
public C(){
System.out.println("子类无参构造方法");
}
public C(String name){
super("");
System.out.println("子类有参构造方法");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
C c1 = new C();
System.out.println("--------------------------");
C c2 = new C("Jack");
}
}
执行结果为:
根据结果,我们可以看出,Java中代码块的执行顺序为:
父类的静态代码块–>子类的静态代码块–>main方法–>父类的构造代码块–>父类的构造方法–>子类的构造代码块–>子类的构造方法