class Person
{
String name = "No name";
public Person(String nm)
{
name = nm;
}
}
class Employee1 extends Person
{
String empID ="0000";
public Employee1(String id)
{ // Line 1
empID = id;
}
}
public class EmployeeTest
{
public static void main(String[] args) {
Employee1 e = new Employee1("4321");
Person p = new Person("Hello");
System.out.println(e.empID);
}
}
我听到编译错误说 constructor Person in class Person cannot be applied to given types; required String found no arguments
但在main方法中创建新对象时,我同时传递父类和子类的参数。无法找出编译错误的原因?
4条答案
按热度按时间sh7euo9m1#
您需要正确地创建父类,并将
name
作为Person
承包商要求:或者类似于:
2wnc66cl2#
因为只有在默认构造函数没有显式调用超类构造函数时,子类中的构造函数才会隐式调用其直接超类的无参数构造函数
将尝试在超类中调用构造函数,因为您并没有显式地调用它,所以您可以说您的代码如下
但在父类中并没有“无参数”构造函数,所以它会给出这样的错误。
1mrurvl13#
隐式超级构造函数
Person()
没有定义。因此,必须显式调用其父构造函数。
wpcxdonn4#
论网络的构造器
employee
您必须首先调用person
如super(name);
然后初始化子类