Apa itu Method Overloading?

Method Overloading adalah fitur dalam beberapa bahasa pemrograman yang memungkinkan kita mendefinisikan beberapa fungsi (atau method) dengan nama yang sama dalam satu kelas, asalkan parameter atau argumennya berbeda (baik dari segi jumlah, tipe data, atau urutannya).

Dengan kata lain, kita bisa membuat beberapa fungsi dengan nama yang sama, namun membedakan perilakunya berdasarkan parameter yang diberikan. Fitur ini umum ditemukan di bahasa seperti Java dan C++.

Contoh Method Overloading di C++

Berikut adalah contoh implementasi method overloading dalam bahasa C++:

#include <iostream>

using namespace std;

// Fungsi print dengan satu parameter bertipe string
void print(string name) {
  cout << "Hello my name is " << name << "." << endl;
}

// Fungsi print dengan dua parameter: string dan int
void print(string name, int age) {
  cout << "Hello my name is " << name << ". I am " << age << " years old." << endl;
}

int main() {
  string name = "Rizki";
  int age = 19;
  print(name);        // Memanggil fungsi print dengan satu parameter
  print(name, age);   // Memanggil fungsi print dengan dua parameter
  return 0;
}

Output dari program di atas:

Hello my name is Rizki.
Hello my name is Rizki. I am 19 years old.

Pada contoh di atas, terdapat dua fungsi print dengan parameter yang berbeda:

  • Fungsi pertama menerima satu parameter bertipe string.
  • Fungsi kedua menerima dua parameter: string dan int.

Ketika fungsi print dipanggil di dalam main, kompiler akan memilih fungsi yang sesuai berdasarkan jumlah dan tipe parameter yang diberikan.

Kenapa Method Overloading Penting?

Method overloading membuat kode menjadi lebih bersih dan mudah dibaca. Kita tidak perlu membuat nama fungsi yang berbeda-beda untuk operasi yang serupa, cukup membedakan parameternya saja. Namun, penggunaan method overloading juga harus hati-hati agar tidak membingungkan anggota tim lain, terutama jika fungsi yang di-overload memiliki perilaku yang sangat berbeda.

Catatan

  • Tidak semua bahasa pemrograman mendukung method overloading. Misalnya, Python tidak mendukung method overloading secara langsung seperti C++ atau Java.
  • Overloading hanya bisa dilakukan dengan membedakan parameter, bukan hanya dengan mengubah tipe data kembalian (return type).

Referensi