0

我正在尝试编写一个工资单程序,它只接收输入,进行一些计算并显示每个员工的输出。

我有两种类型的员工,小时工和薪水。我为每种类型创建了一个类,该类扩展为一个抽象员工类:

public abstract class Employee{
  private String name;
  private String type;
  private  int hours;
  private double rate;
}


public class SalaryEmployee extends Employee{

  public SalaryEmployee(String type, String name, int hours, double rate){
   this.type = type;
    this.name = name;
    this.hours = hours;
    this.rate = rate;
  }

  public void print(){

  }
}

在我的主要方法中,当我尝试使用以下代码创建对象时:

  Employee employee;
  if(type.equals("hourly"))
  {
    employee = new HourlyEmployee(type, name, hours, rate);
  }
  else
  {
    employee = new SalaryEmployee(type, name, hours, rate);
  }

尝试编译时出现以下错误:

Lab3.java:53: not a statement
        SalaryEmployee employee = new SalaryEmployee(type, name, hours, rate);
         ^
Lab3.java:53: ';' expected
        SalaryEmployee employee = new SalaryEmployee(type, name, hours, rate);
                      ^
2 errors

知道这里发生了什么吗?我四处寻找弄乱的分号或大括号,但还没有找到任何东西。

感谢您的关注。

4

2 回答 2

2

我能看到的唯一错误是您的SalaryEmployee类无法访问基类变量,因为它们是private. 你应该制作它们protected

虽然,你得到的错误会有所不同。如果你在改变后仍然得到错误,你的错误可能在别处。

于 2012-05-31T00:34:48.183 回答
2

在不使用大括号的 if 中声明变量是非法的。看起来你打算写的是这样的:

Employee employee;
if(type.equals("hourly"))
  employee = new HourlyEmployee(type, name, hours, rate);
else
  employee = new SalaryEmployee(type, name, hours, rate);

大多数编码约定都支持在 if 或 else 之后始终使用大括号。

于 2012-05-30T23:50:37.757 回答