Java 构造函数是未定义的问题
我目前正在编写一个程序,它应该读取一个文本文件,创建一个不同类型员工的数组(每个员工都有自己的子类),然后以不同的格式打印信息。我想我已经完成了大部分工作,但每当我尝试实际创建对象时(至少我认为是这样的?),就会出现“构造函数未定义”错误。这发生在所有7个对象上。我将在这里发布一个(及其子类),这样你们就不会被信息过载,希望我能从中找出其余的 谢谢你能提供的任何帮助 我正在读取和创建对象的驱动程序类(不包括下面的其余代码) “Emp[0]”行出现错误 受薪雇员子类Java 构造函数是未定义的问题,java,constructor,undefined,Java,Constructor,Undefined,我目前正在编写一个程序,它应该读取一个文本文件,创建一个不同类型员工的数组(每个员工都有自己的子类),然后以不同的格式打印信息。我想我已经完成了大部分工作,但每当我尝试实际创建对象时(至少我认为是这样的?),就会出现“构造函数未定义”错误。这发生在所有7个对象上。我将在这里发布一个(及其子类),这样你们就不会被信息过载,希望我能从中找出其余的 谢谢你能提供的任何帮助 我正在读取和创建对象的驱动程序类(不包括下面的其余代码) “Emp[0]”行出现错误 受薪雇员子类 public clas
public class SalariedEmployee extends Employee
{
private double weeklySalary;
// four-argument constructor
public SalariedEmployee( String first, String last, String ssn, Date DayOfBirth, String ID,
double salary )
{
super( first, last, ssn, DayOfBirth, ID); // pass to Employee constructor
setWeeklySalary( salary ); // validate and store salary
} // end four-argument SalariedEmployee constructor
// set salary
public void setWeeklySalary( double salary )
{
double baseSalary;
if ( salary >= 0.0 )
baseSalary = salary;
else
throw new IllegalArgumentException(
"Weekly salary must be >= 0.0" );
} // end method setWeeklySalary
// return salary
public double getWeeklySalary()
{
return weeklySalary;
} // end method getWeeklySalary
// calculate earnings; override abstract method earnings in Employee
@Override
public double earnings()
{
return getWeeklySalary();
} // end method earnings
// return String representation of SalariedEmployee object
@Override
public String toString()
{
return String.format( "salaried employee: %s\n%s: $%,.2f",
super.toString(), "weekly salary", getWeeklySalary() );
} // end method toString
} // end class SalariedEmployee
再次感谢您提供的帮助 是的-看看你的构造函数,包括明显不准确的注释:
// four-argument constructor
public SalariedEmployee(String first, String last, String ssn, Date DayOfBirth,
String ID, double salary)
注意有6个参数。下面是你如何称呼它的:
Emp[0] = new SalariedEmployee(first, last, ssn, DayOfBirth, ID);
您正在传递5个参数。工资怎么了
作为旁注:
- Java变量通常采用camelCased格式,因此
和dayOfBirth
而不是id
和dayOfBirth
id
- 对工资等财务价值使用
是个坏主意。使用double
或保留整数分。(这是假设你甚至需要它到美分…)BigDecimal
Emp[0] = new SalariedEmployee(first, last, ssn, DayOfBirth, ID);