为何会把A() 也打印出来

为什么会把A() 也打印出来
代码:

public class Test01 extends A {
Test01 (){
print("B()");
}

public void f(){
print("B:f()");
}

public static void main(String[] args){
Test01 t = new Test01();
t.f();
}
}

class A {
protected void print(String s){
System.out.println(s);
}

A(){
print("A()");
}

public void f(){
print("A:f()");
}
}



我以为只会打印出来:B()    B:f()
没有想到打印的是:A()    B()   B:f()
请问,为什么会把A() 也打印出来呢
------解决思路----------------------
子类对象实例化会引起父类先实例化~
------解决思路----------------------
因为Test01继承了A,那么在Test01的构造器中,会默认调用父类A的构造器,也就是说 test01的构造器其实是
Test01 (){
        super();   //自动调用父类构造器
        print("B()");
    }
------解决思路----------------------
子类调用构造器时必须先调用父类的构造器,那个子类的构造器中省略了super(),但是还会调用
------解决思路----------------------
子类初始化的时候会先调用父类的构造方法
------解决思路----------------------
子类会先调用父类构造函数