从我之前提出的关于枚举的问题中,我能够理解枚举到底是什么,但在实践中我对它们仍然很陌生。在我的实验室中,它意外地显示:
“创建扩展类 SalariedEmployee 的 Manager 类并包含以下信息:
-该员工所管理的部门的名称。创建一个枚举类 4-8个不同的部门,例如薪资、生产、会计、研究、营销等。
-员 worker 数(整数)- 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;
}
}
你们认为这是有效且充分的吗?显然教授肯定知道他在问什么,但从你自己的解释来看,我这样做对吗?
此外,如果我的 super 构造函数的 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;
}
}
这是否足以覆盖 super 构造函数的参数范围/规范?谢谢。
最佳答案
我怀疑老师打算让你将员 worker 数放入枚举中。提供给枚举的附加信息通常是不会更改的数据。员 worker 数是经常变化的。我相信您的讲师的要求是 Manager 类应该包含一个属性,用于说明 Manager 管理着多少员工,如下所示:
public class Manager extends SalariedEmployee {
private Department department;
private Integer numEmployees;
...
}
由于这似乎是一项作业,因此我不想提供比这更多的代码。祝你好运!
我认为您在问题的第二部分中提出的问题已经足够了。在构造函数中调用 super() 后,您可以随意将 super() 方法设置的任何属性的值更改为不同的值。我不确定我是否完全理解您想要对薪资范围做什么,但我认为您已经提供了足够的信息来表明您正在做的事情已经足够了。
关于java - 我的 Java 枚举类的格式正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669150/