猿问

大虾解释下

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();
 }
}

输出的是

A

B

为什么不是

A

A

B


宝慕林4294392
浏览 496回答 2
2回答

DIEA

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

慕哥6287543

因为你显示调用了父类的无参构造  super(); 当显示调用无参构造函数时 该函数执行一次class A { A() {  System.out.printf("A\n"); }}class B extends A { B() {    System.out.printf("B\n"); }}若不使用 super(); 显示调用的话 结果也是一样的
随时随地看视频慕课网APP

相关分类

Java
我要回答