为什么编译失败?

时间:2013-02-05 14:48:17

标签: java

为什么在这种情况下编译失败?

这是怎么回事? :Employee的构造函数调用default constructor of Person,这就是全部。

enter image description here

3 个答案:

答案 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中定义默认构造函数。