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

浣花溪边 2015-05-18 09:42:46
代码:

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() 也打印出来呢
...全文
245 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
S117 2015-05-19
  • 打赏
  • 举报
回复
子类会先调用父类构造函数
tyilack_小小黑 2015-05-19
  • 打赏
  • 举报
回复
子类初始化的时候会先调用父类的构造方法
浣花溪边 2015-05-19
  • 打赏
  • 举报
回复
谢谢大家的帮助。。
JNSimba 2015-05-18
  • 打赏
  • 举报
回复
子类调用构造器时必须先调用父类的构造器,那个子类的构造器中省略了super(),但是还会调用
苏1994 2015-05-18
  • 打赏
  • 举报
回复
因为Test01继承了A,那么在Test01的构造器中,会默认调用父类A的构造器,也就是说 test01的构造器其实是 Test01 (){ super(); //自动调用父类构造器 print("B()"); }
飏飏一蝶 2015-05-18
  • 打赏
  • 举报
回复
子类对象实例化会引起父类先实例化~

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧