title: Override member data in subclass, use in superclass implementation?
body: <p>In Java, is it possible to override member data in a subclass and have that overridden version be the data used in a super class's implementation?</p>
  
  <p>In other words, here's what I am trying to get to happen, and it's not happening:</p>
  
  <pre><code>abstract public class BasicStuff {
          protected String[] stuff = { "Pizza", "Shoes" };
  
          public void readStuff() {
                  for(String p : stuff) { 
                          system.out.println(p); 
                  }
          }
  }
  </code></pre>
  
  <p>..</p>
  
  <pre><code>public class HardStuff extends BasicStuff {
          protected String[] stuff = { "Harmonica", "Saxophone", "Particle Accelerator" };
  }
  </code></pre>
  
  <p>This invocation:</p>
  
  <pre><code>HardStuff sf = new HardStuff();
  sf.readStuff();
  </code></pre>
  
  <p>... prints <code>Pizza</code> and <code>Shoes</code>.  I want it to print the latter instead.</p>
  
  <p>I recognise that this is rather poor hierarchical OO practice;  I needed it for a very specific case as I am doing something with XML configuration and reflection.</p>
  
  <p>Is there a modifier that can make this happen?</p>
  
  <p>And yes, I do recognise that there are wrappers one can use to get around this problem in my subclass, i.e. by indicating that the contents of <code>stuff[]</code> are now stored in an array with a different name, for instance.  I'm just trying to keep this simple, and am curious in principle.</p>
  
  <p>Thanks a lot in advance!</p>