title: Why static method of parent class is called when subclass has already overridden it?
body: <p>I am confused by the behaviour of the static method when it is overridden in the subclass. </p>
  
  <p>Below is the code:</p>
  
  <pre><code>public class SuperClass {
  
      public static void staticMethod() {
          System.out.println("SuperClass: inside staticMethod");
      }
  }
  
  public class SubClass extends SuperClass {
  
  //overriding the static method
      public static void staticMethod() {
          System.out.println("SubClass: inside staticMethod");
      }
  }
  
  
  public class CheckClass {
  
      public static void main(String[] args) {
  
          SuperClass superClassWithSuperCons = new SuperClass();
          SuperClass superClassWithSubCons = new SubClass();
          SubClass subClassWithSubCons = new SubClass();
  
          superClassWithSuperCons.staticMethod();
          superClassWithSubCons.staticMethod();
          subClassWithSubCons.staticMethod();
  
      }
  }
  
  
  Below is the output which we are getting :
  
      1) SuperClass: inside staticMethod
      2) SuperClass: inside staticMethod
      3) SubClass: inside staticMethod
  </code></pre>
  
  <p>Why static method of superclass gets called here in the second case? </p>
  
  <p>If method is not static, then according to polymorphism, method of the subclass is called when subclass object is passed on runtime. </p>