Zastąp dane członkowskie w podklasie, użyj w implementacji superklasy?
Czy w Javie możliwe jest zastąpienie danych członkowskich w podklasie i czy ta nadpisana wersja jest danymi wykorzystywanymi w implementacji superklasy?
Innymi słowy, oto co próbuję osiągnąć, a to się nie dzieje:
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" };
}
To wezwanie:
HardStuff sf = new HardStuff();
sf.readStuff();
... drukujePizza
iShoes
. Chcę, żeby zamiast tego drukował ten drugi.
Uznaję, że jest to raczej zła hierarchiczna praktyka OO; Potrzebowałem go do bardzo konkretnego przypadku, ponieważ robię coś z konfiguracją XML i refleksją.
Czy istnieje modyfikator, który może to spowodować?
I tak, zdaję sobie sprawę, że istnieją opakowania, które można wykorzystać do obejścia tego problemu w mojej podklasie, tj. Wskazując, że zawartośćstuff[]
są teraz przechowywane w tablicy o innej nazwie, na przykład. Po prostu staram się, aby to było proste i jestem z zasady ciekawy.
Z góry dziękuję!