class A{ A() { System.out.printf("A\n"); }}class B extends A{ B() { super(); System.out.printf("B\n"); }}public class Constructor_Executive_Order { public static void main(String args[]) { B b=new B(); }}输出的是AB为什么不是AAB
2 回答

DIEA
TA贡献1820条经验 获得超3个赞
1,子类实例化时只会调用一次父类的构造函数,这是语言规范;
2,你只能在子类构造函数中调用父类构造函数;
3,super() 表示显示调用父类的构造函数,该方法主要是用于调用有参的父类构造函数,如果父类具有无参的构造函数,编译器会自动调用该无参构造函数,而不用你使用 super() 语句显示调用;

慕哥6287543
TA贡献1831条经验 获得超10个赞
因为你显示调用了父类的无参构造 super(); 当显示调用无参构造函数时 该函数执行一次
class A {
A() {
System.out.printf("A\n");
}
}
class B extends A {
B() {
System.out.printf("B\n");
}
}
若不使用 super(); 显示调用的话 结果也是一样的
添加回答
举报
0/150
提交
取消