آموزش قدم به قدم جاوا – قسمت چهاردهم

در این قسمت با مفهوم Overloading یا سربارگذاری آشنا خواهیم شد.

سربارگذاری متدها (Method Overloading)

هر متد در جاوا امضای (Signature) مخصوص به خود را دارد. امضای یک متد از نام متد، تعداد پارامترها و نوع پارامترهای آن تشکیل می‌شود. نمی‌توان در یک کلاس دو یا چند متد با امضای یکسان داشت چون کامپایلر هنگام فراخوانی متد نمی‌تواند تشخیص دهد که کدام متد را باید فراخوانی کند.

گاهی اوقات نیاز داریم که در یک کلاس چند متد با نام یکسان داشته باشیم. در جاوا قابلیتی به نام سربارگذاری متد وجود دارد که به ما اجازه می‌دهد دو یا چند متد با نام یکسان اما با تعداد یا نوع پارامترهای مختلف داشته باشیم.

مثال:

در این کلاس دو متد Overload شده به نام print داریم که اولی مقدار پارامتر خود را در کنسول چاپ می‌کند و دومی دو پارامتر به نام‌های text و count دریافت می‌کند و مقدار text را به تعداد count چاپ می‌کند.

همانطور که دیدید نام این دو متد دقیقا با هم یکسان است اما در تعداد پارامتر با هم تفاوت دارند. وقتی یکی از این دو متد در برنامه فراخوانی شود کامپایلر از تعداد پارامترهای ورودی به متد متوجه می‌شود که منظور برنامه نویس کدام متد print بوده است.

نکته: متدهای Overloadشده الزاما نباید تعداد پارامترهای متفاوت باهم داشته باشند. متدهای Overload شده می‌توانند همگی به تعداد یکسان پارامتر داشته باشند اما در این صورت نوع داده پارامترهای آن‌ها باید با هم متفاوت باشد. مثلا کد قبل را می‌توان به شکل زیر نوشت:

نکته: متدهای Overload شده می‌توانند نوع داده برگشتی متفاوتی باهم داشته باشند.

سربارگذاری سازنده‌ها (Constructor Overloading)

سربارگذاری سازنده‌ها این امکان را به ما می‌دهد تا چند سازنده در یک کلاس داشته باشیم. شرط وجود چند سازنده در یک کلاس هم مانند متدها، داشتن تعداد یا نوع پارامتر متفاوت برای هر سازنده می‌باشد.

مثال:

در این کلاس سه سازنده داریم که می‌توانیم هنگام ایجاد شی از این کلاس از یکی از این سازنده‌ها استفاده کنیم.

اگر به کد سازنده‌های دوم و سوم دقت کنید می‌بینید که کد سازنده‌های قبلی در آن‌ها تکرار شده است. برای جلوگیری از این کار می‌توانیم به شکل زیر عمل کنیم:

همانطور که در سازنده‌های دوم و سوم می‌بینید و در کامنت هم نوشته شده است با عبارت this() می‌توانیم سازنده‌های دیگر را فراخوانی کنیم (با کاربرد دیگر عبارت this که برای دسترسی به فیلدهای کلاس به‌کار می‌رود در قسمت قبل آشنا شدید)

مثلا در سازنده سوم دو پارامتر isOn و model را به سازنده دومی دادیم تا آن‌ها را به فیلدهای مربوطه نسبت دهد.

مصطفی نصیری

دانشجوی نرم افزار هستم و علاقه شدیدی به برنامه نویسی مخصوصا با زبان جاوا دارم! در حال حاضر تمرکزم روی اندرویده. دوست دارم چیزایی که یاد میگیرم رو با بقیه به اشتراک بگذارم :)

همچنین ممکن است دوست داشته باشید ...

۴ واکنش

  1. آقای مصطفی نصیری، خیلی خوبه که با قدرت این آموزش رو ادامه میدید. هرچند من خودم زیاد علاقه به این کار ندارم و میخوام به سمت دیزاین و فرانتند برم. موفق باشی.

  2. iman313 گفت:

    اقا واقعا اموزش هاتون معرکه است خدا خیرتون بده که رایگان هم قرار میدید .
    شماکه حرفه ای هستید تروخدا ادامه بدید جاوا رو

  3. محمد علی خاصه پز گفت:

    این کاربورد this رو نمی دونستم و برام جالب بود . یک سوال توی زبان های دیگه هم مثل زبان #C هم این کار بورد هست ؟؟؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *