Java 为什么编译失败?

Java 为什么编译失败?,java,Java,为什么在这种情况下编译失败 是这样吗Employee的构造函数调用Person的默认构造函数,仅此而已 由于您的超类构造函数没有定义无参数默认构造函数,因此您应该从子类构造函数显式调用超类的1-args构造函数。 因此,第18行的答案是编译错误 要修复代码,请执行以下操作: public Employee(String id){ super("pass person name"); //rest of the code } 我想你们可能假设这个人有一个默认的构造函数。编译器仅在没有声明构造函数

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

是这样吗
Employee的构造函数
调用
Person的默认构造函数
,仅此而已


由于您的超类构造函数没有定义无参数默认构造函数,因此您应该从子类构造函数显式调用超类的1-args构造函数。 因此,第18行的答案是编译错误

要修复代码,请执行以下操作:

public Employee(String id){
super("pass person name");
//rest of the code
}

我想你们可能假设这个人有一个默认的构造函数。编译器仅在没有声明构造函数的情况下插入默认构造函数。如果您希望Person具有无参数构造函数,则需要声明一个构造函数。

在构造员工时,您需要亲自调用构造函数。默认情况下,编译器将调用默认构造函数(不带参数),但在本例中,它并不存在(编译器仅在不存在其他构造函数的情况下创建默认构造函数)


您必须在员工构造函数的第一行中调用Person的具体构造函数,或亲自定义默认构造函数。

当您尝试它时发生了什么,当您查找错误时发现了什么?如果这不是家庭作业,这一定是某种测试:)@dasblinkenlight,如果你用谷歌搜索那个错误消息,你会得到975000个结果。@PeterLawrey 975K???哇,我觉得这个信息是不言自明的。。。另一方面,考虑到“plz发送代码”问题的数量如此之多,我不应该太惊讶。@DasbLinkedLight lolz第一页的Allot是堆栈溢出;)但我不需要这样做,我使用
empID
string找到了一个替代方法!为什么编译没有成功?好吧,如果您的人名是EmpId,那么就可以了..:),顺便说一下,这只是一个示例代码:)你还没有回答我的问题!为什么编译器会在这种情况下说话。对于“他”,它将创建两个默认构造函数,仅此而已@如果在代码中编写构造函数,则编译器不包括ALJIMohamed默认构造函数。i、 例如,在您的情况下,在这两个类中,类的编译器没有为您创建任何默认构造函数,因为您编写了自己的构造函数。因此,由于我为Person和Employee创建了构造函数,因此不会创建任何默认构造函数。因此,当我使用
newemployee
分配空间时,我需要为不存在的Person调用一个默认构造函数!这就是编译失败的原因?!右:)