title: Creating an object of an inherited class in c#
body: <p>This should be a pretty straight-forward question. I only ask for a <strong>simple</strong> <strong>easy to understand</strong> answer. No, I don't want a textbook definition or a link to documentation, please, if possible answer this as simply as possible.</p>
  
  <p>Consider the following:</p>
  
  <pre><code>class Monster
  {
      public int Hp { get; protected set; }
      public string Name { get; protected set; }
  
      public virtual void Attack()
      {
          Console.WriteLine("Monster attacking!");
      }
  }
  
  class Skeleton : Monster
  {
      public Skeleton()
      {
          Hp = 20;
          Name = "Skeleton";
      }
      public override void Attack()
      {
          Console.WriteLine("Skeleton attacking!");
      }
  }
  </code></pre>
  
  <p>Now imagine I create a new Skeleton object with the type Monster as so.</p>
  
  <pre><code> Monster skeleton = new Skeleton();
  </code></pre>
  
  <p>I would like to know the difference between creating a Skeleton object with a <strong>Monster Type</strong> vs creating a Skeleton Object with a <strong>Skeleton type</strong>.</p>
  
  <pre><code> Skeleton skeleton = new Skeleton();
  </code></pre>
  
  <p>I don't understand if there's a difference between the two or really how this works. Any and all help appreciated! Thank you!</p>