This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
The clone() method is declared on Object to return type Object. Up until 1.5, there were no covariant return types, so if the parent class's method is declared to return type X, the child's method must also be declared to return type exactly type X.
Starting with 1.5, covariant return types allow the child method to declare a return of X or any subtype of X. Calendar's clone() method would therefore be allowed to declare a return type of any subtype of Object (with Calendar being the obvious choice), but apparently nobody bothered to go back in and change its declaration.