【发布时间】:2021-08-23 15:27:36
【问题描述】:
我正在编写一些显示公司员工信息的继承代码。工人可以拥有三种状态,它们被放置在一个枚举中。 {TEMPORARY,PART_TIME,FULL_TIME}。默认状态是临时的。我在运行代码时遇到的问题是,当我没有提及工作人员的状态时,它应该打印出“TEMPORARY”但它会打印出“null”,我不确定如何修复它。我对这个问题的假设是,我认为枚举类似于数组,我应该给它某种值,然后再更改它。
这是我的代码:
class Faculty extends Employee{
private Status status;
public Faculty(){
status = Status.TEMPORARY;
}
public Faculty(String name, String email, String phoneNumber){
super(name, email, phoneNumber);
}
public Faculty(String name, String email, String phoneNumber, String office, double salary, Status status){
super(name, email, phoneNumber, office, salary);
this.status = status;
}
public void setStatus(Status status){
this.status = status;
}
public String getStatus(){
return " Status: " + status;
}
@Override
public String toString(){
return getName() + getEmail() + getPhoneNumber() + getOffice() + " Salary: " + getSalary() + getStatus();
}
}
【问题讨论】:
-
一个枚举(比如你的“状态”)不能有“默认”值。任何一个 int 都可以有一个“默认数字”,或者一个字符串可以有一个“默认字符”。 员工可以拥有默认状态。问题:您只在一个构造函数中设置默认值,而不是所有构造函数。可能的解决方案:将您的成员声明更改为
private Status status = Status.TEMPORARY;
标签: java function inheritance methods enums