Java 超类&x27;默认的无参数构造函数

Java 超类&x27;默认的无参数构造函数,java,inheritance,constructor,Java,Inheritance,Constructor,在java教程中 您不必为类提供任何构造函数,但在这样做时必须小心。编译器会自动为任何没有构造函数的类提供一个无参数的默认构造函数。此默认构造函数将调用超类的无参数构造函数。在这种情况下,如果超类没有无参数构造函数,编译器会抱怨,因此必须验证它是否有。如果您的类没有显式的超类,那么它有一个隐式的Object超类,它确实有一个无参数构造函数 有人能给我举个例子说明编译错误在哪里吗?假设你有一个Super类 class A { public A(int n) { } }

在java教程中

您不必为类提供任何构造函数,但在这样做时必须小心。编译器会自动为任何没有构造函数的类提供一个无参数的默认构造函数。此默认构造函数将调用超类的无参数构造函数。在这种情况下,如果超类没有无参数构造函数,编译器会抱怨,因此必须验证它是否有。如果您的类没有显式的超类,那么它有一个隐式的Object超类,它确实有一个无参数构造函数


有人能给我举个例子说明编译错误在哪里吗?

假设你有一个
Super

class A
{
    public A(int n)
    {

    }
}

class B extends A
{

}
class Super {

 // no constructor
 // Java compiler will assign a default constructor
 // Super () {} 

}
class Child extends Super {

      public Child() {
          //super(); --> this statement will be inserted by default by Java compiler, even though you don't put it in your code
      }

}
和一个
子类

class Super {

 // no constructor
 // Java compiler will assign a default constructor
 // Super () {} 

}
class Child extends Super {

      public Child() {
          //super(); --> this statement will be inserted by default by Java compiler, even though you don't put it in your code
      }

}
如果
Super
是这样的话

class Super {

  Super(int a) {
    // Now this is the only constructor Super class has
    // Java doesn't insert a default constructor now..
  }

}
Child
不能没有参数构造函数,因为
Super
不再有参数构造函数

class `Child` {

  Child() {
     // super();
     //this will be error since there is no "no-argument" constructor in Super
  }

}


今天早些时候有人问过这个问题吗?这个问题已经被问了很多次了,答案都是一样的。曾经这样的例子:。我的建议是,在发布问题之前,请在谷歌上快速搜索一下。您将更快地获得大量答案,并减少重复。@Sebastian:是的,其中一个在4小时前被询问并删除。-是的,所以我是人类!:)但是,在这种情况下,
子类可以有一个默认构造函数。这是当无参数构造函数使用参数调用
super()
时,例如
super(0)
super(5)