title: Why and when use polymorphism?
body: <p>I'm new to OOP and polymorphism has given me a hard time:</p>
  
  <pre><code>class Animal
  {
      public virtual void eat()
      {
          Console.Write("Animal eating");
      }
  }
  class Dog : Animal
  {
      public override void eat()
      {
          Console.Write("Dog eating");
      }
  }
  class Program
  {
      public void Main()
      {
          Animal dog = new Dog();
          Animal generic = new Animal();
          dog.eat();
          generic.eat();
      }
  }
  </code></pre>
  
  <p>So that prints</p>
  
  <pre><code>Dog eating
  Animal eating
  </code></pre>
  
  <p>But why not to just use the Dog type instead of animal, like Dog dog = new Dog()? I assume this comes handy when you know the object is a animal, but don't know what kind of animal it is. Please explain this to me.</p>
  
  <p>Thanks</p>