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