title: Why do we instantiate Calendar Class(abstract) in Java
body: <p>I am a beginner Java programmer, and I've been reading about the Calendar class. It's an abstract class and all of its methods are static, but it is used as follows: </p>
  
  <pre><code>Calendar cal = Calendar.getInstance();
  </code></pre>
  
  <p>Where you use <code>cal</code> to call methods like: </p>
  
  <pre><code>cal.setTimeinMillis(day1); 
  </code></pre>
  
  <p>I'm confused about this. When calling methods against a class, why do we need a reference variable and <strong>how is this legal for static methods?</strong></p>