Overloading
Kalian dapat membuat lebih dari satu method dengan nama yang sama. Ini disebut method overloading,
Ketika dua method memiliki nama yang sama, mereka tidak dapat memiliki signature yang sama. Signature dari sebuah method di definisikan sebagai kombinasi dari nama method, tipe, dan urutan parameter yang ada pada method.
Untuk mengilustrasikan apa itu method signature, perhatikan contoh berikut:
static int Kalikan(int a, int b, int c)
{
return a * b;
}Method ini memiliki signature yang terlihat seperti ini: Multiply(int,int).
Kalian dapat melakukan overload pada suatu method jika kalian menggunakan signature yang berbeda. Jadi contohnya, kode ini akan berhasil dijalankan:
static int Kalikan(int a, int b)
{
return a * b;
}
static int Kalikan(int a, int b, int c)
{
return a * b * c;
}Kode tersebut berhasil karena kedua method Kalikan memiliki signature yang berbeda (Yang pertama memiliki dua parameter, yang berikutnya memiliki tiga parameter). Kita juga dapat mendefinisikan sebuah method Kalikan yang tidak memiliki parameter (int Kalikan()), atau memiliki satu parameter (int Kalikan(int)), tetapi dalam kasus ini, kedua method tersebut tidak akan masuk akal, karena operasi perkalian harus menggunakan paling tidak dua bilangan kan?
Kalian juga dapat memiliki jumlah parameter yang sama tetapi dengan tipe yang berbeda, seperti ini:
static int Kalikan(int a, int b)
{
return a * b;
}
static double Kalikan(double a, double b)
{
return a * b;
}Kode tersebut bisa karena kedua method Kalikan memiliki signature yang berbeda, yang pertama adalah Kalikan(int,int) dan yang kedua adalah Kalikan(double,double)
Kode berikut tidak akan bekerja:
static int Kalikan(int a, int b)
{
return a * b;
}
static int Kalikan(int c, int d) // Ini tidak akan bekerja, karena mempunyai signature yang sama
{
return c * d;
}Keuntungan dari Method overloading adalah kalian dapat membuat banyak method yang mempunyai fungsi mirip, tetapi menggunakan tipe data berbeda (seperti perkalian menggunakan int dan double) tanpa harus menggunakan nama yang berbeda.
Pastikan kalian hanya melakukan overloading ketika memang melakukan hal yang sama dengan data yang berbeda. Jika dua method memiliki nama yang sama, mereka harus melakukan hal yang pada dasarnya sama pula. Jika kalian tahu yang satunya melakukan apa, harus sudah jelas method satunya lagi melakukan apa (yang di_overload_). Jika tidak seperti itu, maka berarti lebih baik kalian menggunakan nama method yang berbeda untuk menghindari kebingungnan.
Melihat Kembali Class Convert dan Console
Sekarang kita sudah memiliki pengetahuan dasar tentang bagaimana method bekerja di C#, mari kita diskusikan lagi tentang class class yang sudah kita gunakan. Contohnya pada class Console, kita sudah beberapa kali melakukan hal seperti ini:
Console.WriteLine("Hello World!");Dengan pengetahuan baru kita tentang method, kita dapat melihat bahwa di kode itu ada class Console, yang mempunyai sebuah method bernama WriteLine yang kita panggil. Method WriteLine memiliki satu parameter, yaitu string. Kita memasukkan string "Hello World" dan methodnya menjalankan tugasnya.
Ini adalah contoh yang tepat dari kenapa kita menggunakan method. Jadi karena seseorang sudah membuat method WriteLine yang akan menuliskan sesuatu pada jendela console, kita tidak perlu membuatnya sendiri, dan juga tidak perlu tahu bagaimana method tersebut melakukan tugasnya. Kita hanya peduli pada fakta bahwa method tersebut melakukan tugasnya, dan mudah untuk digunakan. Ini menghilangkan kekhawatiran pada bagian yang lebih unik atau menarik dari program kita.
Kita juga dapat melihat hal yang mirip pada class Convert, yang sudah kita gunakan beberapa kali pula:
int number = Convert.ToInt32("42");class Convert memiliki banyak method yang memungkinkan kalian untuk mengkonversi banyak tipe ke tipe lainnya. Pada contoh yang kita lihat di atas, kita dapat melihat method bernama ToInt32 yang mengambil string sebagai parameter. Class ini menggunakan method overloading secara ekstensif, karena ia memiliki method ToInt32 yang dapat mengambil string, yang mengambil double, yang mengambil short, dan seterusnya.
Last updated