Java:为什么我的类会自动从超类继承构造函数?

Java:为什么我的类会自动从超类继承构造函数?,java,inheritance,constructor,Java,Inheritance,Constructor,当我尝试此问题底部的代码时,输出为: a a b a b c 这意味着B和C的构造函数从它们的超类调用构造函数。但是为什么呢? 我认为超类的构造函数只有在与super()函数一起使用时才会被调用,如下所示: public sportscar(String name, int weight, int topspeed){ super(name, weight); this.setTopspeed(topspeed); } 但是如果它自动从它们所扩展的类中接管构造函数,我们为什么

当我尝试此问题底部的代码时,输出为:

a a b a b c
这意味着B和C的构造函数从它们的超类调用构造函数。但是为什么呢? 我认为超类的构造函数只有在与super()函数一起使用时才会被调用,如下所示:

public sportscar(String name, int weight, int topspeed){
    super(name, weight);
    this.setTopspeed(topspeed);
}
但是如果它自动从它们所扩展的类中接管构造函数,我们为什么要使用super()函数呢?我知道普通方法会自动扩展到这些子类,但我认为构造函数是不同的

如果有人能帮我解决这个问题,非常感谢

代码:


此行为由JLS()强制执行:

如果构造函数体不是以显式构造函数调用开头,并且所声明的构造函数不是原始类
对象的一部分,则构造函数体隐式地以超类构造函数调用“
super();
”开头,对其直接超类的构造函数的调用,不带任何参数

public class App {
    public static void main(String[] args) {
        new A();
        new B();
        new C();
    }
}

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

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

public class C extends B {
    public C(){
         System.out.println("c ");
    }
}