Java 子 class 中的构造函数不正确

incorrect constructor in Java child class

谁能帮我理解为什么(在Java)class B 是正确的,而class C 会抛出编译错误?

class A {
    int x = 1;
    A(int x) { this.x = x; }
}

class B extends A {
    B() { super(2); }
    B(int x) { super.x = x; } //Error
}

class C extends A {
    C() { super.x = 2; }      //Error
    C(int x) { super.x = x; } //Error
}

因为在构造函数 C() 中,构造函数 A() 被隐式调用。你无法阻止这种情况,除非调用另一个构造函数。但是构造函数 A() 不存在,只有 A(int),因此出错。 (如果您没有编写任何其他构造函数,则默认构造函数仅隐式存在 - 只要您有另一个构造函数,就必须添加默认构造函数,否则它将不存在)。