সাধারণত, ওভাররাইডিং-এ, সুপারক্লাস এবং সাবক্লাসের মেথডের নাম এবং প্যারামিটার একই থাকে। কিন্তু রিটার্ন টাইপের ক্ষেত্রে, সাবক্লাসের মেথড সুপারক্লাসের মেথডের রিটার্ন টাইপের সাবটাইপ রিটার্ন করতে পারে।
উদাহরণ
যদি আপনি নিচের উদাহরণটি পর্যবেক্ষণ করেন, সুপার ক্লাসে 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