title: Polymorphism and Static Methods
body: <p>I have a question about this code right here</p>
  
  <pre><code>public Car {
      public static void m1(){
          System.out.println("a");
      }
      public void m2(){
          System.out.println("b");
      }
  }
  
  class Mini extends Car {
      public static void m1() {
          System.out.println("c");
      }
      public void m2(){
          System.out.println("d");
      }
      public static void main(String args[]) {
          Car c = new Mini();
          c.m1();
          c.m2();       
     }
  }
  </code></pre>
  
  <p>I know that polymorphism does not work with static methods, only to instance methods. And also that overriding doesn't work for static methods.</p>
  
  <p>Therefore I think that this program should print out:  c, d</p>
  
  <p>Because c calls the m1 method, but it's static, so it can't override and it calls the method in class Mini instead of Car.</p>
  
  <p>Is this correct?</p>
  
  <p>However, my textbook says that the answer should be : a, d</p>
  
  <p>is it a typo? Because I'm a little confused right now.</p>
  
  <p>Please clear this up, thanks. </p>