我为什么要用Java调用super()?

Or *_*ith 2 java super

我在一本书中看到了一个关于java的例子:

public class A{
  public A(){
      System.out.println("A");
   }
}

public class B extends A{
    public B(){
       super();
       System.out.println("B");
   }

    public static void main(String[] args){
        B b = new B();
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么要super()在这里?即使我删除super(),我也会得到相同的结果(A将被打印,然后是B).据我所知,当我初始化子类时,父类在它之前初始化.为什么要使用super()

rge*_*man 13

在这种特殊情况下,您不需要调用super();,因为super();如果您没有显式调用它,Java将在构造函数中隐式插入调用. (Java Tutorial链接).

只有在其他情况下才需要调用超类中的另一个非默认构造函数,例如:

public class A{
  public A(String s){
      System.out.println("A");
   }
}

public class B extends A{
    public B(String s){
       super(s);
       System.out.println("B");
   }
}
Run Code Online (Sandbox Code Playgroud)