[英]Initializing “Default” final attributes in Java abstract class
我有一个抽象类,应该具有一个(int)属性,该属性在初始化后不能修改,并且预设为1; 最好的方法是什么? 我应该做最后吗? 要求是在类内部,我将只有一个构造函数(带有参数),并且没有设置方法。 如果是这样的话,如果它是最终版本,并且我将如何在构造函数中对其进行初始化,那么如何默认将其设置为1? 谢谢!
您应该使用带有参数的构造函数来设置初始值。 然后,就像您所说的,不要创建任何设置器,并确保您的字段是私有的,以便没有人可以访问它。
这样,您将做自己想要的事情,初始化字段,但此后再也不会更改。
事实上,如果它始终是一个恒定值,您甚至可以对其进行硬编码。
例如,如果变量应始终为25,则可以执行以下操作:
public abstract class Test
{
protected final int pressure = 25;
//Constructor
public Test()
{
// TODO Auto-generated constructor stub
}
}
但是,如果在运行时评估值,则需要在Object的构造函数中进行设置:
public abstract class Test
{
protected final int pressure;
//Constructor
public Test(int pressure)
{
this.pressure = pressure;
}
}
请注意,在这种情况下, 不得更早分配变量!
是否应使用最终变量的问题取决于其目的。 最终变量在整个生命周期中只能分配一次。 如果必须进行任何修改,则不应使用。
您可以使用构造函数重载来实现这一点。 参见示例:
public abstract class TestClass{
private final int otherParam;
private final int fixedParam;
public TestClass(final int otherParam){
this.otherParam = otherParam;
this.fixedParam = 1;
}
public TestClass(final int otherParam, final int fixedParam){
this.otherParam = otherParam;
this.fixedParam = fixedParam;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.