0

冗長性をあまり持たずに、次の問題の解決策を作成したいと考えています。

抽象クラスUnit、サブクラスSubUnit1、およびがありSubUnit2ます。すべてUnitの には、~maxValueとは異なるがありますが、常に同じサブユニットのすべてのインスタンスで同じである必要があります。SubUnit1SubUnit2

すべてのサブクラスで同一であるため、これらの値に関連するすべてのセッター、ゲッター、または何らかのメソッドをコピーしたくありません。また、通常のパラメーターを使用したり、メソッドをサブクラスに渡したり、必要に応じてこれらのサブクラスのすべてのインスタンスを更新したりしたくありません。そして、新しいインスタンスを作成するときに、どういうわけか現在の値を取得します。

Unitさまざまなサブクラスで異なる、親クラスである種の静的パラメーターとメソッドを宣言する方法はありますか?

4

2 に答える 2

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);
   }
}
于 2013-02-16T17:43:13.910 に答える
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;
   }
}
于 2013-02-16T17:34:05.463 に答える