所以我有一个包含姓名、地址、年龄和电子邮件地址的 Person 类。 Person 的子类 Student,具有“类(class)状态(大一、大二、大三、大四)”。我必须将状态定义为常量。
class Student extends Person{
private String classStatus;
public Student(String name, String address, int age, String email,
final String classStatus){
super(name, address, age, email);
this.classStatus = classStatus;}
这有什么特别不对的地方吗? Eclipse 没有给我任何错误,但是,我觉得我的变量实际上并没有设置为常量。基本上,当我构造一个 Student 对象时,我还想在参数中包含“freshmen”、“sophomore”、“junior”或“senior”,它会将 classStatus 设置为常量。
当我写这篇文章时,我意识到如果我不为 classStatus 提供 set 方法,它是否已经是一个固有的常量?这是因为它是私有(private)的吗?
最佳答案
As I was writing this, I realized that if I don't provide a set method for the classStatus, is it inherently a constant already? Is this due to it being private?
这不是正确的做法,请将变量 classStatus
声明为 final
private final String classStatus;
在这种情况下,您必须在创建 Student 实例时提供 classStatus
,此后无法为该实例更改。
关于java - 我如何在构造函数中将字段设置为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942572/