我正在尝试编写一个工资单程序,只需接收输入,进行一些计算并显示每位员工的输出。
我有两种类型的员工,每小时和工资。我为扩展到抽象员工类的每种类型创建了一个类:
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
知道这里发生了什么吗?我四处寻找混乱的半冒号或大括号,但还没找到任何东西。
感谢您的光临。
答案 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
。
虽然,你得到的错误会有所不同。如果你在更改后仍然收到错误,那么你的错误可能就在其他地方。