This Blog is Under Construction

Friday, March 3, 2017

Covariant Return টাইপ কি





আমরা জানি যদি Supper Class এর মেথড Subclass এ Override করি তবে Subclass এ method signature ও return type একই হওয়া লাগে । না হলে সেটা Override হবে না ।
কিন্তু return type যদি Covariant হয় তবে Subclass এ আমরা return type আলাদা করতে পারবে । তবে সেটা কিছু শর্ত মেনে চলতে হবে । শর্ত হল ঐ subclass এর মেথডের return type অবশ্যই Superclass type হতে হবে ।
অর্থাৎ Supperclass মেথড return type যদি r1 হয় এবং Subclass এ এসে সেই return type যদি r2 হয় [ Signature same হতে হবে ] তবে r2 কে অবশ্যই Supper Type হতে হবে । যদি Supper type না হয় তবে সেটা Invariant হবে এবং কম্পাইল এরর খেতে হবে ।
কোড :
 class A {
 }

 class B extends A {
 }

 class C {
     A getA() {
         return new A();
     }
 }

 class D extends C {
     //Overriding getA()
     B getB() {
         return new B(); // return type is different and B is subtype of A
     }
 }

এখন question হতে পারে এই কাজটা করা সুবিধা কি ?
সুবিধা হল আমারা আমাদের মেথড থেকে more specific ভাবে ভালু রিটার্ন করতে পারছি । এবং কোড পড়ার ক্ষেত্রেও এটা সুবিধাজনক ।
পুনশ্চ : Java 5.0 এর আগে জাভা তে Covariant return type ছিল না । Java 5.0 তেই সর্ব প্রথম Covariant return type সুবিধা অ্যাড করা হয়েছে 


এই পোস্টটি মেহেদি হাসান মেনন শেয়ার করছেন :D 

No comments:

Post a Comment