Javaの静的変数を継承します
-
29-09-2019 - |
質問
次のセットアップが必要です。
abstract class Parent {
public static String ACONSTANT; // I'd use abstract here if it was allowed
// Other stuff follows
}
class Child extends Parent {
public static String ACONSTANT = "some value";
// etc
}
これはJavaで可能ですか?どのように?回避できる場合は、インスタンス変数/メソッドを使用したくありません。
ありがとう!
編集:
定数はデータベーステーブルの名前です。各子オブジェクトはミニORMです。
解決
あなたはあなたが望むように正確にそれをすることはできません。おそらく、受け入れられる妥協は次のとおりです。
abstract class Parent {
public abstract String getACONSTANT();
}
class Child extends Parent {
public static final String ACONSTANT = "some value";
public String getACONSTANT() { return ACONSTANT; }
}
他のヒント
この場合、あなたが覚えておく必要があるのはJavaでは、静的な方法が過剰にできないことです。何が起こったのかは、ものを隠していることです。
あなたが次のことをした場合にあなたが置いたコードに応じて、答えはnullになります
Parent.ACONSTANT == null ; ==> true
Parent p = new Parent(); p.ACONSTANT == null ; ==> true
Parent c = new Child(); c.ACONSTANT == null ; ==> true
親として親を使用する限り、Aconstantはnullになります。
このようなことをしましょう。
Child c = new Child();
c.ACONSTANT = "Hi";
Parent p = c;
System.out.println(p.ACONSTANT);
出力はヌルになります。
所属していません StackOverflow