title: Why does Abstract Factory use abstract class instead of interface?
body: <p>I am learning about design patterns and the first example in the book is about Abstract Factory.
  I have built the exercise in VS and all looks good, but there is one question that I wonder about.</p>
  
  <p>In the book the factory class is implemented like this:</p>
  
  <pre><code>public abstract class AbstractVehicleFactory
  {
      public abstract IBody CreateBody();
      public abstract IChassis CreateChassis();
      public abstract IGlassware CreateGlassware();
  }
  </code></pre>
  
  <p>After completing the exercise I have noted that the above class can be replaced with this code:</p>
  
  <pre><code>public interface IAbstractVehicleFactory
  {
        IBody CreateBody();
        IChassis CreateChassis();
        IGlassware CreateGlassware();
  }
  </code></pre>
  
  <p>Of course both examples function exactly the same, but I wonder what is the reason for using an abstract class and not an interface?</p>