title: Best practice for defining superclass instance fields based on the subclass
body: <p>I have an abstract super class and several subclasses that inherit fields defined in the super class, but each subclass has different values for those fields. When the subclass is called, I use the constructor to set the fields appropriately.</p>
  
  <p>Should I use direct references to do this <code>field = value</code>, or should I use the super class set methods <code>setField(value);</code>?</p>
  
  <p>I'd rather keep the fields private, so I want to avoid direct references.</p>
  
  <p>The other alternative is to call the super constructor, which would allow me to use direct references in the super class constructor <code>super (T value)</code> and in the super class <code>SuperClass(T value){ field = value}</code>. Would this be the best way? I could even use set methods inside the super constructor, but this seems like it would be redundant.</p>