help understanding abstract classes: java calendar method getInstance()
<p>I'm having trouble understanding the concept behind abstract classes.  The definition I'm reading is that they have at least one method which is declared but lack implementation, thus the class can't be instantiated.  The java calendar class is abstract and can't be instantiated using the New operator, however there's a method called getInstance() which returns a calendar object.  How does this work?</p>

<pre><code>Calendar cal = new Calendar(); //doesn't work
Calendar cal = Calendar.getInstance(); //works
</code></pre>
