Javaでは、サブクラスのメンバーデータをオーバーライドし、そのオーバーライドされたバージョンをスーパークラスの実装で使用されるデータにすることは可能ですか?
言い換えれば、これが私が起こそうとしていることであり、それは起こっていない:
abstract public class BasicStuff {
protected String[] stuff = { "Pizza", "Shoes" };
public void readStuff() {
for(String p : stuff) {
system.out.println(p);
}
}
}
..
public class HardStuff extends BasicStuff {
protected String[] stuff = { "Harmonica", "Saxophone", "Particle Accelerator" };
}
この呼び出し:
HardStuff sf = new HardStuff();
sf.readStuff();
...プリントPizzaとShoes。代わりに後者を印刷してほしい。
私は、これは階層的なOOの実践としてはかなり貧弱であることを認識しています。XML構成とリフレクションで何かをしているので、非常に特殊なケースでそれが必要でした。
これを実現できる修飾子はありますか?
はい、サブクラスでこの問題を回避するために使用できるラッパーがあることを認識しています。たとえば、のコンテンツがstuff[]別の名前の配列に格納されていることを示します。私はこれを単純にしようとしているだけで、原則として興味があります。
よろしくお願いします!