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