私は同じ抽象クラスを拡張する2つのクラスを持っています。どちらも同じ定数が必要ですが、値は異なります。これどうやってするの?私がしたいことを示すためのコード例です。Javaでの定数のオーバーライド
abstract class A {
public static int CONST;
}
public class B extends A {
public static int CONST = 1;
}
public class C extends A {
public static int CONST = 2;
}
public static void main(String[] args){
A a = new B();
System.out.println(a.CONST); // should print 1
}
CONSTがクラスAで初期化されていないため、上記のコードはコンパイルされません。どうすれば動作させることができますか? CONSTの値は、Bのすべてのインスタンスで1、Cのすべてのインスタンスで2、Aのすべてのインスタンスで1または2でなければなりません。これには静的変数を使用する方法はありますか?
ありがとうございました!値がBのインスタンスごとに異なるわけではないので、私は静的を使用することができます。 – Fractaly
@Fractaly:しかし、彼らはAのインスタンスから別のインスタンスに変わります。 –
はAで抽象的であるgetConst()をしてはいけませんか? – Fractaly