title: Java Polymorphism
body: <p>This is a question just out of curiosity.</p>
  
  <p>I know that when we call a subclass object's overridden method by the reference of it's superclass, JVM gives importance to the type of object and not to type of reference.</p>
  
  <p>This is my simple code : </p>
  
  <pre><code>class Animal
  {
      void eat()
      {
          System.out.println("Animal is eating...");
      }
  }
  class Horse extends Animal
  {
      @Override
      void eat()
      {
          System.out.println("Horse is eating...");
      }
  }
  public class PolymorphismTest
  {
      public static void main(String...args)
      {
          Animal a=new Animal();
          a.eat();
  
          Animal h= new Horse();
          h.eat();
      }
  }
  </code></pre>
  
  <p>As expected, I get the output : </p>
  
  <pre><code>run:
  Animal is eating...
  Horse is eating...
  BUILD SUCCESSFUL (total time: 0 seconds)
  </code></pre>
  
  <p>Now my question is , 
  Is there any way that we can use reference h to call the superclass eat() method and not the subclass one? I know this is a question that is somewhat against the laws of polymorphism but you never know when the need may arise to do so.</p>
  
  <p>I tried to typecast the reference h to Animal but no luck. Any ideas?</p>