contoh "method overloading"

Dilarang keras membaca TUTORIAL INI jika belum memahami pembahasan di link ini.

Dalam Java method dalam suatu class dapat memiliki nama yang sama jika mereka memiliki daftar parameter yang berbeda (ada beberapa kualifikasi dari parameter yang akan dibahas dalam tutorial berikutnya (Interface & Inheritance)) itulah yang dinamakan dengan "method overloading".

Sebagai contoh kita ingin melakukan operasi penjumlahan 2 atau 3 buah bilangan secara berulang-ulang dengan nilai yang berbeda-beda. Seperti yang kita ketahui bahwa dalam Java bilangan bulat dan bilangan real (pecahan) sangat dibedakan. Lalu bagaimana cara kita menangkap 2 buah nilai yang akan dijumlahkan bukan dalam tipe yang sama. Sedangkan bilangan tersebut sama-sama akan dijumlahkan. Sungguh sangat membuang-buang waktu jika kita tulis kode program untuk menghitung bilangan-bilangan tersebut satu-persatu.

Mari kita perhatikan contoh berikut :

public class Hitung
{   static int tambah(int x, int y)
    {   return x+y;
    }
    
    static double tambah(double x, double y)
    {   return x+y;
    }
    
    static int tambah(int x, int y, int z)
    {   return x+y+z;
    }
    
    static void tambah2(int x, int y)
    {   System.out.println("x"+x+" + y"+y+"="+(x+y));
    }
    
    public static void main(String[] a)
    {   int x,y;
        x=2;    y=x+3;
        x=tambah(2,3);
        System.out.println("1.    "+x);
        System.out.printf("2.   %.2f \n",tambah(2.3, 4.1));
        System.out.println("3.   "+tambah(5, 12, 3));
        System.out.println("4.   "+tambah(100, 0.5));
        System.out.println("5.   "+tambah(2.5, 4));
        System.out.println("6.   "+tambah(tambah(x*2, (x*2-y)), tambah((y-x),
                                                tambah(7, 3), 2)));
        System.exit(0);
    }
}

Penjelasan :
Dari source code di atas mari kita perhatikan manakah yang disebut "method overloading" itu. Dari beberapa method di atas ada beberapa yang menggunakan nama yang sama ("tambah"). Tapi memiliki return type dan parameter yang berbeda. Ada yang bertipe integer dan double.

Apa gunanya dibuat beberapa method yang sama tersebut tapi berbeda return type dan parameter-nya ? Bukankan penjumlahan itu tidak hanya terdiri dari bilangan bulat saja, tapi juga terdiri dari bilangan double. Apa yang terjadi jika hanya ada satu method yang hanya dapat menangkap bilangan bulat sedangkan yang ingin kita jumlahkan adalah bilangan bulat. Maka dari itu dibuatlah method lain dengan nama yang sama tapi return type dan parameter-nya berbeda untuk menampung bilangan berbeda yang akan dijumlahkan nanti.