为什么不能这样做?

Geo*_*iuc 0 java

class A {
    A(int x) { System.out.println("constructor A"); } }

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

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

它说A类的构造函数不能应用于给定的类型.

gex*_*ide 10

您必须在构造函数中A(int x)显式调用构造函数B().即,你必须写

class B extends A {
   B() {
       super(<<< insert some int here>>>);
       System.out.println(" constructor B");
   } 
}
Run Code Online (Sandbox Code Playgroud)

如果你没有添加这样的超级调用,那么java将为super();你插入试图调用的内容A().由于没有构造函数,A()您会收到错误,指出您的构造函数不能应用于参数类型.