为什么在这种情况下编译失败?
这是怎么回事? :Employee
的构造函数调用default constructor of Person
,这就是全部。
答案 0 :(得分:7)
由于您的超类构造函数没有定义no-args默认构造函数,因此您应该从子类构造函数中显式调用超类的1-args构造函数。 因此,第18行的答案是 D 编译错误
修复代码:
public Employee(String id){
super("pass person name");
//rest of the code
}
答案 1 :(得分:0)
我认为你可能假设Person有一个默认的构造函数。如果没有声明的构造函数,编译器只会插入默认构造函数。如果你想让Person有一个no-arg构造函数,你需要声明一个。
答案 2 :(得分:0)
构建Employee时,需要在Person中调用构造函数。默认情况下,编译器将调用默认构造函数(不带参数),但在这种情况下,它在Person中不存在(只有在没有其他构造函数存在的情况下,编译器才会创建默认构造函数。)
您必须在Employee构造函数的第一行调用Person的具体构造函数,或在Person中定义默认构造函数。