title: Cast an object of super class to a sub class - down casting
body: <p>I know that casting can really only be done from a sub class to a super class (up casting) but this example illustrates what I would like to do.</p>
  
  <pre><code>Class Super {}
  Class Sub extends Super {}
  
  Super super = new Super();
  Sub sub = (Sub)super;
  </code></pre>
  
  <p>I believe this is referred to as "down" casting which is not allowed so...</p>
  
  <p>What is the best way to create an object of type Sub given an object of type Super.</p>
  
  <p>EDIT:</p>
  
  <p>That's the question - What's the best way to convert an Animal to a Cat.</p>
  
  <p>The answer? Start with a base type animal and copy the attributes to the cat. Add fur and a tail, etc. Basically a copy constructor. Is this the right answer (or a good answer)?</p>
  
  <p>ANOTHER EDIT:</p>
  
  <p>I think my question is pretty clear but maybe it is too general. Asking for the "best" way to do something tends to give a lot of varying responses. I realize the best way can be different in different circumstances.</p>
  
  <p>I'm not looking for a tutorial on Java or OO basics. Just fishing for opinions so I can solve this problem as I have outlined it using best practices.</p>