创建从一个类扩展到放入数组列表的对象

时间:2012-05-30 23:42:56

标签: java

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

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

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(){

  }
}

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

  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

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

感谢您的光临。

2 个答案:

答案 0 :(得分:2)

在不使用大括号的情况下声明变量是违法的。看起来你打算写的是这样的:

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

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

答案 1 :(得分:2)

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

虽然,你得到的错误会有所不同。如果你在更改后仍然收到错误,那么你的错误可能就在其他地方。