title: Adding setters to properties in overrides
body: <p>Why is it allowed to change the visibility and existence of getters or setters in a property when implementing an interface?</p>
  
  <pre><code>interface IFoo
  {
      string Bar { get; }
  }
  
  class RealFoo : IFoo
  {
      public RealFoo(string bar)
      {
          this.Bar = bar;
      }
  
      public string Bar { get; private set; }
  }
  
  class StubFoo : IFoo
  {
      public string Bar { get; set; }
  }
  </code></pre>
  
  <p>...and not legal to do the same when implementing an abstract class?</p>
  
  <pre><code>abstract class AbstractFoo : IFoo
  {
      public abstract string Bar { get; }
  }
  
  class RealFoo : AbstractFoo
  {
      public RealFoo(string bar)
      {
          this.Bar = bar;
      }
  
      // Cannot override because 'Bar' does not have an overridable set accessor
      public override string Bar { get; private set; }
  }
  </code></pre>