Java编译器错误:"找不到符号构造函数.."?

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)

Osc*_*Ryz 9

您没有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)