我想为以下问题创建一个没有太多冗余的解决方案:
我有一个抽象类 Unit
、子类 SubUnit1
和 SubUnit2
。所有 Unit
都有一个 maxValue
,它与 SubUnit1
和 SubUnit2
不同,但对于所有实例都应该相同任何时候都属于同一个子单元。
我不想复制这些值的所有 setter、getter 或某种方法,因为它们对于所有子类都是相同的。我也不想使用普通参数并将方法传递给子类,并在必要时更新这些子类的每个实例。当我创建新实例时,以某种方式获取当前值。
有没有办法在父类Unit
中声明某种静态参数和方法,这些参数和方法在不同的子类中有所不同?
最佳答案
您可以在父类中定义一个 protected 构造函数来接受 MAXVALUE 的值
public abstract class Unit {
private final int maximum;
protected Unit(int maximum) {
this.maximum = maximum;
}
public int getMaximum() {
return maximum;
}
}
然后在派生类中公开构造函数,这些构造函数使用每个子类唯一的固定值调用父级构造函数。
public class SubUnit1 {
private static final int SUBUNIT1_MAX = 10;
public SubUnit1() {
super(SUBUNIT1_MAX);
}
}
关于java - 子类中具有不同值的静态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913089/