This happens a lot, for instance with java.awt.Toolkit and java.text.DateFormat.
Calendar itself is abstract, but the static method returns an instance of a non-abstract subclass of Calendar.
In the case of Calendar, the returned calendar is either a sun.util.BuddhistCalendar (this is a Sun internal class), a java.util.GregorianCalendar or (in Java 6 and up) a java.util.JapaneseImperialCalendar (which is package private). In the case of Toolkit, this is some internal class.
What you need to remember from all of this is: the method returns some unknown subclass, and the only thing you are sure of is that it is a Calendar / Toolkit / DateFormat / etc.
You should never count on the specific subclass (like GregorianCalendar), since it may change in the future.