In the K&B SCJP certification Book and exactly in chapter6 (Dates, Numbers, and Currency (Exam Objective 3.4)) the author says that "In order to create a Calendar instance, you have to use one of the overloaded getInstance() static factory methods:" but, the Calendar Class is an abstact one, and you cannot create an instance of an abstract class what ever the method you use!!
Actually when you call Calendar.getInstance(); what happens inside getInstance is that an object of a concrete class is created. Normally it�s an instance of java.util.GregorianCalendar, which is concrete.
Think like this: among other stuff, the method Calendar.getInstance() does something like return new GregorianCalendar(); So it doesn't try to instantiate Calendar (which is abstract), but GregorianCalendar (which is concrete).
Try to run the code that follows and you will notice that the result is: java.util.GregorianCalendar