सामान्यतः, ओवरराइडिंग में, सुपरक्लास और सबक्लास में मेथड का नाम और पैरामीटर समान होते हैं। लेकिन रिटर्न टाइप के मामले में, सबक्लास में मेथड सुपरक्लास के मेथड के रिटर्न टाइप का सबटाइप वापस कर सकता है।
उदाहरण
यदि आप निम्न उदाहरण देखें तो सुपर क्लास में demoMethod() नामक एक मेथड है जो List टाइप का मान वापस करता है। यदि हम इस मेथड को ओवरराइड करते हैं तो सबक्लास में मेथड List (जो सुपरक्लास में है) टाइप का मान वापस कर सकता है या फिर List का सबटाइप (सुपरक्लास में मेथड का रिटर्न टाइप) जैसे ArrayList, Stack, Vector आदि वापस कर सकता है।
इस परिदृश्य में सबक्लास मेथड ArrayList वापस करता है, जो सुपरक्लास के रिटर्न टाइप List का सबटाइप है। यह सबटाइप (ArrayList) कोवेरिएंट टाइप के रूप में जाना जाता है।
उदाहरण
class Test{ int data =100; Test demoMethod(){ return this; } } public class Sample extends Test{ int data = 1000; Sample demoMethod(){ return this; } public static void main(String args[]){ Sample sam = new Sample(); System.out.println(sam.demoMethod().data); } }आउटपुट
1000