title: Abstract class constructors
body: <p>Everywhere I see, there are blogs, content, notes that say Abstract classes cannot be instantiated.</p>
  
  <p>Now in c# I created a sample code, something like this:</p>
  
  <pre><code>public abstract class Fundamental
  {
      public Fundamental()
      {
          Console.WriteLine("This is an abstract constructor");
      }
  }
  </code></pre>
  
  <p>Now why does the comipler suggest that the constructor must be protected. Why does it even allow a constructor.</p>
  
  <p>I know what we can do a class instantiation like this,</p>
  
  <pre><code>Fundamental instance = new LessFundamental();
  </code></pre>
  
  <p>where less fundamental is this:</p>
  
  <pre><code>public class LessFundamental : Fundamental { }
  </code></pre>
  
  <p>But why the constructor. Also I can use internal, protected, public on this abstract class constructor. At some places it is mentioned that</p>
  
  <blockquote>
    <p>You can still extend the abstract class and call the abstracts class'
    constructor in your derived class</p>
  </blockquote>
  
  <p>But when would one need it?</p>
  
  <p>Which design scenario does it cater to</p>