java如何修复“无法应用于”错误?
我是Java的新手,尤其是Java中的面向对象编程,我不断地遇到这个让我发疯的错误
下面是我的Employee超类的一部分:
public Employee(String firstName, String lastName, String socialSecurityNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.socialSecurityNumber = socialSecurityNumber;
}
private final String firstName;
private final String lastName;
private final String socialSecurityNumber;
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getSocialSecurityNumber() {
return socialSecurityNumber;
}
以及子类专员雇员:
public CommissionEmployee(String firstName, String lastName,
String socialSecurityNumber, double grossSales,
double commissionRate)
{
this.firstName = firstName;
this.lastName = lastName;
this.socialSecurityNumber = socialSecurityNumber;
this.grossSales = grossSales;
this.commissionRate = commissionRate;
}
我得到的相同错误是:
constructor Employee in class Employee cannot be applied to given types;
required: String,String,String
found: no arguments
reason: actual and formal argument lists differ in length
这到底意味着什么,是什么原因造成的,我该如何修复它
# 1 楼答案
由于
CommissionEmployee
是Employee
的一个子类,Java要求在构造CommissionEmployee
时调用Employee
的构造函数。默认情况下,这是对无参数构造函数Employee()
的调用,在您的情况下,它不存在你有两个选择:
调用已经存在的超类构造函数:
创建一个无参数超类构造函数,并在子类构造函数中设置名字/姓氏和SSN(不太理想)。超类(Employee)构造函数受保护,因此只能通过子类调用它,如下所示: