创建时,
Employee您要同时创建一个
Person。为了确保
Person构造正确,编译器
super()在
Employee构造函数中添加了一个隐式调用:
class Employee extends Person { Employee(int id) { super(); // implicitly added by the compiler. } }由于
Person没有无参数构造函数,因此失败。
您可以通过以下任一方式解决它
添加对super的显式调用,如下所示:
class Employee extends Person { Employee(int id) { super(id); }}
或通过将no-arg构造函数添加到
Person
:class Person {Person() {}Person(int a) {}}
通常,编译器还会隐式添加无参数构造函数。正如Binyamin Sharet在评论中指出的那样,只有在根本不指定构造函数的情况下,情况才如此。在您的情况下,您
已经 指定了Person构造函数,因此不会创建任何隐式构造函数。



