从我之前提到的关于枚举的问题中,我能够理解真正的内容,但我在练习时对他们来说仍然是新手。在我的实验室里,它意外地说:
“创建扩展SalariedEmployee类的类管理器,并包含以下信息:
- 此员工管理的部门名称。使用创建枚举类 4-8个不同的部门,如薪资,生产,会计,研究,市场营销等。
- 雇员数量(整数) - 介于1和100之间的值。“
如果我这样做的话,你们会觉得这样吗? :
public enum Department {
Payroll(10), Production(25), Accounting(30), Research(25), Marketing(7);
//DepartmentName(numberOfEmployees)
private int numberOfEmployees;
private Department(int numberOfEmployees) {
this.numberOfEmployees = numberOfEmployees;
}
}
你们认为这是有效还是充足的?显然,教授肯定知道他的要求是什么,但从你自己的解释来看,我这样做是否正确?
另外,如果我的超级构造函数的int的验证范围比我想要的子类的特定参数的范围更大,那么在super()调用之后只发出一个if / else语句就足够了吗?例如:
public SalariedEmployee(String name, String number, double salary, double deductions) {
super(name, number);
if (salary >= 40000.00 && salary <= 160000.00) {
this.yearlySalary = salary;
} else {
this.yearlySalary = 75000.00;
但是在子类中我希望范围在40k到100k之间,所以我这样做了:
public Supervisor(String name, String number, double salary, double deductions, int goals) {
super(name, number, salary, deductions);
if (salary >= 40000.00 && salary <= 100000.00) {
this.yearlySalary = salary;
} else {
this.yearlySalary = 75000.00;
}
}
这足以覆盖超级构造函数的参数范围/规范吗?谢谢。
答案 0 :(得分:1)
我怀疑老师是否打算让你把员工人数纳入enum。提供给枚举的其他信息通常是不会更改的数据。员工人数经常变化。我相信您的教师要求说Manager类应该包含一个属性,该属性说明Manager管理了多少员工,如下所示:
public class Manager extends SalariedEmployee {
private Department department;
private Integer numEmployees;
...
}
由于这似乎是一项任务,我不想提供比这更多的代码。祝你好运!
我认为你在问题的第二部分提出的问题就足够了。在构造函数中调用super()之后,可以自由地将super()方法设置的任何属性的值更改为不同的值。我不确定我是否完全理解你要对工资范围做些什么,但我认为你已经提供了足够的信息来说明你所做的就足够了。
答案 1 :(得分:1)
您真正需要放入子类构造函数的是
super(name, number, salary,deductions);
if(salary>100000.00){
this.yearlySalary=75000.00;
}
因为您正在检查超类中是否介于40000和160000之间。你的枚举看起来是正确的。