0 java inheritance constructor compiler-errors
我正在为员工,经理,每小时工作人员编写代码,但是我遇到了一个我无法弄清楚的问题,以下是我的员工代码,其后是小时工.问题是每小时工人不会编译,当我尝试编译时,它会给出"找不到符号构造函数员工"错误(员工类compiiles没有问题.请问有什么建议吗?我想我已经盯着它这么久了再也看不到了问题!谢谢.彼得.
员工类 -
public class Employee
{
public String firstName;
public String lastName;
public double hourlyRate;
final static double NORMAL_WORKWEEK = 37.5;
public Employee(String firstName, String lastName, double hourlyRate)
{
setFirstName(firstName);
setLastName(lastName);
setHourlyRate(hourlyRate);
}
//Accessor and Mutator Methods for the employee's first name.
public String getFirstName()
{
return firstName;
}
public void setFirstName(String firstName)
{
firstName = firstName;
}
//Accessor and Mutator Methods for the employee's last name.
public String getLastName()
{
return lastName;
}
public void setLastName(String lastName)
{
lastName = lastName;
}
//Access and Mutator Methods for the employee's hourly rate.
public double getHourlyRate()
{
return hourlyRate;
}
public void setHourlyRate(double hourlyRate)
{
//If the user input is valid, update the employee's hour rate with the newly input value.
if(hourlyRate > 0)
{
hourlyRate = hourlyRate;
}
//Otherwise prevent an hour rate greater than zero being overwritten
else if(hourlyRate <=0)
{
if(hourlyRate <= 0)
{
hourlyRate = 0;
}
decorateConsole();
//Alert the user to their mistake.
System.out.println("Error ! ! ! - An attempt to set the employee " + this.firstName + " " + this.lastName + "'s hourly rate to zero was detected.\n");
decorateConsole();
}
}
public void printState()
{
decorateConsole();
System.out.println("[FIRST NAME] = " + firstName + " [LAST NAME] = " + lastName + " [HOURLY RATE] = " + hourlyRate + "\n");
decorateConsole();
}
public void decorateConsole()
{
System.out.println("+-< EMPLOYEE INFO >-------------------------------------------------------------------------------------------------------------------------+\n");
}
Run Code Online (Sandbox Code Playgroud)
每小时工人阶层 -
public class HourlyWorker extends Employee
{
private double wage;
private double hours;
public HourlyWorker(String firstName, String lastName, double hourlyWage, double hoursWorked)
{
super(firstName, lastName);
this.wage = wage;
this.hours = hours;
}
public void setWage (double hourlyWage)
{
this.wage = wage;
}
public void getWage()
{
return wage;
}
public void setHours (double hours)
{
this.hours = hours;
}
public double getHours()
{
return hours;
}
}
Run Code Online (Sandbox Code Playgroud)
您没有Employee包含两个参数的构造函数:
super(firstName, lastName);
Run Code Online (Sandbox Code Playgroud)
尝试使用:
super(firstName, lastName, 0.0);
Run Code Online (Sandbox Code Playgroud)
根据tony请求编辑,这里有更详细的解释.
随着super(firstName, lastName);你调用(尝试调用)在类的构造函数Employee有两个字符串参数.
回顾一下Employee类定义,我们看到你没有这样的构造函数,但是你有一个有三个参数:
public Employee(String firstName, String lastName, double hourlyRate)
Run Code Online (Sandbox Code Playgroud)
因此,解决方案是调用该构造函数.由于您没有默认值,hourlyRate 我们可以使用0.0,这是一个双倍.
其他替代方法是在Employee类中创建一个两参数构造函数
public Employee(String firstName, String lastName )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |