خرداد ۷, ۱۳۹۸ Mostafa بدون دیدگاه

اگر دنبال برنامه نویس برای ساخت افزونه ،قالب،سایت،برنامه ویندوز،اپلیکیشین اندروید،ربات تلگرام و.... هستید ،سفارش برنامه نویسی را مطالعه نمایید.

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

نوع خروجی covariant بدین معنی است که اگر توسعه دهنده بدنه ی متدی از کلاس پدر را در کلاس فرزند بازنویسی کرد، می تواند نوع بازگشتی یا خروجی متد را در کلاس فرزند، بر روی زیرنوعی (subtype) از نوع بازگشتی متد اصلی (بازنویسی شده) تنظیم کند. به عبارت دقیق تر، نوع بازگشتی covariant به شرایطی اشاره دارد که در آن نوع خروجی متد بازنویسی کننده (متدی در که کلاس فرزند override می شود) به نوع مربوط به return type متد بازنویسی شده (متد کلاس پدر) مرتبط می باشد.

قبل از ویرایش 5 بستر اجرا و زبان Java، امکان بازنویسی متد از طریق ویرایش نوع خروجی آن متد وجود نداشت. اما از ویرایش 5 به بعد، این امکان فراهم شده است که کلاس فرزند متدی از کلاس پدر را که نوع بازگشتی آن از جنس non-primitive (غیر اولیه نظیر آبجکت) هست را با ویرایش نوع خروجی بازنویسی نماید.

لازم به ذکر است که نوع خروجی متد بازنویسی شده در کلاس فرزند، به جنس کلاس فرزند نیز تبدیل می شود.

مثال کاربردی از نوع بازگشت کوواریانت

class A{  
A get(){return this;}  
}  
class B1 extends A{  
B1 get(){return this;}  
void message(){System.out.println("به نوع بازگشت کواریانت خوش آمدید");}  
public static void main(String args[]){  
new B1().get().message();  
}  
}

 

خروجی : به نوع بازگشت کواریانت خوش آمدید

همان طور که می بینید، نوع بازگشتی متد ()get از کلاس A، از جنس A است اما نوع بازگشتی متد ()get از کلاس B از جنس B است. هر دو متد دارای خروجی از نوع متفاوت هستند با این وجود می بینید که مفهوم بازنویسی متد (method overriding) در مثال بالا به معنای واقعی پیاده سازی شده است. در جاوا به این نمونه کاربرد covariant return type گویند.


برچسب ها