Можно ли в 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
. Вместо этого я хочу напечатать последний.
Я понимаю, что это довольно плохая иерархическая ОО-практика; Я нуждался в этом для очень конкретного случая, так как я что-то делаю с настройкой и отражением XML.
Есть ли модификатор, который может это сделать?
И да, я признаю, что есть обертки, которые можно использовать, чтобы обойти эту проблему в моем подклассе, то есть, указав, что содержимое stuff[]
теперь хранится, например, в массиве с другим именем. Я просто стараюсь быть простым и мне любопытно в принципе.
Заранее большое спасибо!