سربارگذاری متدها

سربارگذاری متدها یا Method Overloading، به شما اجازه می‌دهد که، دو یا چند متد با نام یکسان تعریف کنید که، دارای امضا و تعداد پارامترهای مختلف هستند. برنامه از روی آرگومانهایی که شما به متد ارسال می‌کنید به صورت خودکار تشخیص می‌دهد که، کدام متد را فراخوانی کرده‌اید، یا کدام متد مد نظر شماست. امضای یک متد نشان دهنده ترتیب و نوع پارامترهای آن است. به مثال زیر توجه کنید :

void MyMethod(int x, double y, string z)

که امضای متد بالا

MyMethod(int, double, string)

به این نکته توجه کنید که نوع برگشتی و نام پارامترها شامل امضای متد نمی‌شوند. در مثال زیر نمونه‌ای از سربارگذاری متدها آمده است.

   1: package myfirstprogram;
   2: 
   3: public class MyFirstProgram 
   4: { 
   5:     static void ShowMessage(double number)
   6:     {
   7:         System.out.println("Double version of the method was called.");
   8:     }
   9: 
  10:     static void ShowMessage(int number)
  11:     {
  12:         System.out.println("Integer version of the method was called.");
  13:     }
  14:     
  15:     public static void main(String[] args) 
  16:     {
  17:         ShowMessage(9.99);
  18:         ShowMessage(9);
  19:     }   
  20: }
Double version of the method was called.
Integer version of the method was called.

در برنامه بالا دو متد با نام مشابه تعریف شده‌اند. اگر سربارگذاری متد توسط جاوا پشتیبانی نمی‌شد برنامه زمان زیادی برای انتخاب یک متد از بین متدهایی که فراخوانی می‌شوند لازم داشت. رازی در نوع پارامترهای متد نهفته است. کامپایلر بین دو یا چند متد در صورتی فرق می‌گذارد که، پارامترهای متفاوتی داشته باشند. وقتی یک متد را فراخوانی می‌کنیم، متد نوع آرگومانها را تشخیص می‌دهد.
در فراخوانی اول (خط 17) ما یک مقدار double را به متد ShowMessage() ارسال کرده‌ایم در نتیجه متد ShowMessage() (خطوط 8-5) که دارای پارامتری از نوع double اجرا می‌شود. در بار دوم که متد فراخوانی می‌شود (خط 18) ما یک مقدار int را به متد ShowMessage() ارسال می‌کنیم متد ShowMessage() (خطوط 13-10) که دارای پارامتری از نوع int است اجرا می‌شود. معنای اصلی سربارگذاری متد همین است که توضیح داده شد.
هدف اصلی از سربارگذاري متدها این است که، بتوان چندین متد که وظیفه یکسانی انجام می‌دهند، را تعریف کرد. تعداد زیادی از متدها در جاوا، سربارگذاری می‌شوند، مانند متد println() از کلاس out. قبلاً مشاهده کردید که این متد می‌تواند یک آرگومان از نوع رشته دریافت کند و آن را نمایش دهد، و در حالت دیگر می‌تواند دو یا چند آرگومان قبول کند.