title: Polymorphism/Type Casting Usage
body: <p>I've always been a little wary about polymorphism and still don't think I understand the concept to the fullest. </p>
  
  <p>I understand polymorphism as an object can take many forms. So an object can be one form then be another?</p>
  
  <pre>
  Mammal (base class)
  cat (subclass of mammal) 
  supercat (subclass of cat)
  </pre>
  
  <pre><code>Cat newCat = new Cat();
  </code></pre>
  
  <p>Now I want the cat to be a supercat, is this "Polymorphism"? </p>
  
  <pre><code>SuperCat supCat = (SuperCat)newCat;
  </code></pre>
  
  <p>Isn't this just like casting? When do you want to use casting? Is the above line of code valid? So newCat gets transformed to Supercat, does it give newCat more memory allocation? Then copies it into supCat? </p>
  
  <p>NOTE -- Polymorphism is the use of interfaces? </p>