title: Override a method with more restrictive access modifier
body: <p>I would like to know: 
  Why overriding method cannot have a more restrictive access modifier than method being overriden? </p>
  
  <p>For example:</p>
  
  <pre><code>class Animal{
      public void eat(){
          System.out.println("Generic Animal Eating Generically");
      }
  }
  
  class Horse extends Animal{
      public void eat(){
          System.out.println("Horse eating hay, oats, and horse treats");
      }
  }
  </code></pre>
  
  <p>In Horse class, why can't I write the code like this:</p>
  
  <pre><code>private void eat(){
      System.out.println("Horse eating hay, oats, and horse treats");
  }
  </code></pre>
  
  <p>or</p>
  
  <pre><code>protected void eat(){
      System.out.println("Horse eating hay, oats, and horse treats");
  }
  </code></pre>