来自贝茨和塞拉:
class Top {
public Top(String s) {
System.out.print("B");
}
}
public class Bottom2 extends Top {
public Bottom2(String s) {
System.out.print("D");
}
public static void main(String[] args) {
new Bottom2("C");
System.out.println(" ");
}
}
选择是:
A、BD
B、数据库
C. BDC
D. DBC
E. 编译失败
回答:
® ✓ E 是正确的。Bottom2 的构造函数中隐含的 super() 调用无法满足,因为 Top 中没有无参数构造函数。仅当类没有明确定义的构造函数时,编译器才会生成默认的无参数构造函数。
但我很困惑。不是“public Top(String s) { System.out.print("B"); } ” 明确定义的构造函数?我哪里错了?
我在这里看到了这个问题,但并没有真正理解答案。