我想在没有太多冗余的情况下为以下问题创建解决方案:
我有一个抽象类Unit
,子类SubUnit1
和SubUnit2
。所有Unit
都有maxValue
,不同于SubUnit1
到SubUnit2
,但对于同一子单元的所有实例,任何时候都应该相同。
我不想复制这些值的所有setter,getter或某种方法,因为它们对于所有子类都是相同的。我也不想使用普通的参数,并将方法传递给子类,并在必要时更新这些子类的每个实例。并且在我创建新实例时以某种方式获取当前值。
有没有办法在父类Unit
中声明某种静态参数和方法,这些参数和方法在不同的子类中有所不同?
答案 0 :(得分:1)
您可以在父类中定义受保护的构造函数,该构造函数接受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);
}
}
答案 1 :(得分:0)
不,但使用interface
你可能表示UNIT应该有一个MAXVALUE。
public interface IUnit
{
public int getMaxValue();
}
public class SubUnit implements IUnit
{
private static final int MAX_VALUE = 48;
@Override
public int getMaxValue() {
return MAX_VALUE;
}
}