title: Why do a child class need to implement a parents interface to hide one of that parents methods in C#?
body: <p>I found this behaviour while working with a third-party library where I needed to hide and change one of it's methods. </p>
  
  <p>I have the following setup:</p>
  
  <pre><code>interface IBaseInterface
  {
      string MethodToHide();
  }
  
  class BaseClass : IBaseInterface
  {
      public string MethodToHide()
      {
          return "BaseClass";
      }
  }
  
  class ChildClass : BaseClass
  {
      new public string MethodToHide()
      {
          return "ChildClass";
      }
  }
  </code></pre>
  
  <p>Why is it that when I run the following:</p>
  
  <pre><code>var i = (IBaseInterface) (new ChildClass());
  Console.WriteLine(i.MethodToHide());
  </code></pre>
  
  <p>the output is</p>
  
  <blockquote>
    <p>BaseClass</p>
  </blockquote>
  
  <p>, but when changing the ChildClass signature to</p>
  
  <pre><code>class ChildClass : BaseClass, IBaseInterface
  </code></pre>
  
  <p>, the output is</p>
  
  <blockquote>
    <p>ChildClass</p>
  </blockquote>
  
  <p>Why do I need to explicitly specify the interface for the BaseClass method to be hidden by the ChildClass?</p>