类B继承类A,当实例化一个B类型时,执行顺序为:
A的静态代码块->B的静态代码块->A的构造代码块->A的无参构造函数->B的构造代码块->B的无参构造函数
public class Test1 {
public static void main(String[] args) {
System.out.println(2 + 2 + "5" + 2 + 2);
B b = new B();
}
}
class A {
private int a;
static {
System.out.println("A静态代码块");
}
public A() {
System.out.println("A的无参构造方法");
}
{
System.out.println("A的构造代码块");
}
public A(int a) {
this.a = a;
System.out.println("A的有参构造方法");
}
}
class B extends A {
private int b;
static {
System.out.println("B静态代码块");
}
public B() {
System.out.println("B的无参构造方法");
}
{
System.out.println("B的构造代码块");
}
public B(int b) {
this.b = b;
System.out.println("B的有参构造方法");
}
}
运行结果: