title: Reason to use BOTH abstract classes and interfaces? (Abstract class implements interface)
body: <p>Recently I have come across a curious pattern in some code.  We know that there is a time and a place for everything, especially when it comes to the issue of ABCs and interfaces, but this just seems redundant to me.</p>
  
  <pre><code>  // This describes a person....
    public interface IPerson
    {
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public int BasePay { get; set; }
      public string Address { get; set; }
    }
  
    // And so does this, but it also uses the interface....
    public abstract class Person : IPerson
    {
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public int BasePay { get; set; }
      public string Address { get; set; }
    }
  
    // This uses both ?!
    public class CoalMiner : Person, IPerson
    {
      public CoalMiner()
      {
        BasePay = 10000;
      }
    }
  </code></pre>
  
  <p>Can anybody think of what the specific advantage of using both and ABC and an interface that define the same members be?</p>