package covariant; class A {} class B extends A {} class X { A meth() { return new A(); } } class Y extends X { B meth() { return new B(); } } /* Session-Log: $ jdk1.4/bin/javac CovariantReturn.java CovariantReturn.java:13: meth() in Y cannot override meth() in X; attempting to use incompatible return type found : B required: A B meth() { ^ 1 error $ jdk1.5/bin/javac CovariantReturn.java $ */