Polymorphism pada Bahasa Pemrograman C#
Dalam C#, polymorphism (polimorfisme) adalah konsep dalam pemrograman berorientasi objek (OOP) yang memungkinkan suatu method atau fungsi memiliki banyak bentuk. Polymorphism memungkinkan kita untuk membuat kode yang lebih fleksibel dan mudah diperluas.
Artikel ini akan membahas apa itu polymorphism dalam C#, bagaimana cara menggunakannya, serta contoh implementasinya dalam berbagai skenario pemrograman.
1. Apa Itu Polymorphism dalam C#?
Polymorphism memungkinkan sebuah method dalam class parent untuk diubah atau ditimpa dalam class child, sehingga class yang berbeda bisa memiliki implementasi yang berbeda untuk method yang sama.
Ciri-Ciri Polymorphism
✅ Memungkinkan method yang sama memiliki perilaku berbeda di subclass.
✅ Dapat dicapai dengan method overriding atau method overloading.
✅ Memudahkan ekspansi program dengan fleksibilitas kode.
2. Jenis-Jenis Polymorphism dalam C#
2.1 Compile-time Polymorphism (Method Overloading)
Method yang sama bisa memiliki beberapa parameter berbeda untuk menangani berbagai kasus.
class Kalkulator {
public int Tambah(int a, int b) {
return a + b;
}
public double Tambah(double a, double b) {
return a + b;
}
}
class Program {
static void Main() {
Kalkulator k = new Kalkulator();
Console.WriteLine(k.Tambah(5, 10)); // Output: 15
Console.WriteLine(k.Tambah(2.5, 3.7)); // Output: 6.2
}
}
Output:
15
6.2
Penjelasan:
- Method
Tambah()
dideklarasikan dua kali dengan parameter berbeda. - Compiler memilih method yang sesuai dengan tipe data yang dipanggil.
2.2 Runtime Polymorphism (Method Overriding)
Subclass dapat mengganti implementasi method dari superclass menggunakan keyword override
.
class Hewan {
public virtual void Suara() {
Console.WriteLine("Hewan mengeluarkan suara.");
}
}
class Kucing : Hewan {
public override void Suara() {
Console.WriteLine("Meow! Meow!");
}
}
class Anjing : Hewan {
public override void Suara() {
Console.WriteLine("Guk! Guk!");
}
}
class Program {
static void Main() {
Hewan h1 = new Kucing();
h1.Suara(); // Output: Meow! Meow!
Hewan h2 = new Anjing();
h2.Suara(); // Output: Guk! Guk!
}
}
Output:
Meow! Meow!
Guk! Guk!
Penjelasan:
Suara()
pada classHewan
bersifat virtual, sehingga bisa di-override oleh subclass.override
digunakan dalamKucing
danAnjing
untuk mengubah perilakuSuara()
.
3. Menggunakan base
untuk Memanggil Method Superclass
Jika ingin tetap memanggil method superclass saat overriding, gunakan keyword base
.
class Hewan {
public virtual void Suara() {
Console.WriteLine("Hewan berbunyi.");
}
}
class Kucing : Hewan {
public override void Suara() {
base.Suara();
Console.WriteLine("Meow! Meow!");
}
}
Output:
Hewan berbunyi.
Meow! Meow!
Penjelasan:
base.Suara()
memanggil methodSuara()
dariHewan
sebelum menambahkanMeow! Meow!
.
4. Menggunakan Polymorphism dengan abstract
dan interface
Polymorphism sering digunakan dalam class abstrak dan interface untuk mendukung desain yang lebih fleksibel.
4.1 Polymorphism dengan Abstract Class
abstract class Bentuk {
public abstract void Gambar();
}
class Lingkaran : Bentuk {
public override void Gambar() {
Console.WriteLine("Menggambar Lingkaran.");
}
}
class Kotak : Bentuk {
public override void Gambar() {
Console.WriteLine("Menggambar Kotak.");
}
}
4.2 Polymorphism dengan Interface
interface IKendaraan {
void Jalan();
}
class Mobil : IKendaraan {
public void Jalan() {
Console.WriteLine("Mobil berjalan di jalan raya.");
}
}
class Motor : IKendaraan {
public void Jalan() {
Console.WriteLine("Motor melaju dengan cepat.");
}
}
5. Kapan Harus Menggunakan Polymorphism?
✅ Gunakan polymorphism jika:
- Memerlukan kode yang fleksibel dan mudah diperluas.
- Memungkinkan berbagai class memiliki method dengan nama yang sama tetapi perilaku berbeda.
- Menggunakan desain berbasis abstraksi dan interface.
❌ Jangan gunakan polymorphism jika:
- Setiap class memiliki implementasi yang sangat berbeda dan tidak berbagi fungsi yang sama.
- Tidak ada kebutuhan untuk menggunakan class sebagai superclass atau interface.
6. Kesimpulan
- Polymorphism memungkinkan method memiliki berbagai bentuk dalam class yang berbeda.
- Terdapat dua jenis polymorphism: compile-time (method overloading) dan runtime (method overriding).
- Memudahkan perluasan program dengan kode yang lebih modular dan fleksibel.
- Digunakan dalam inheritance, abstract class, dan interface untuk desain berbasis OOP.
Dengan memahami Polymorphism dalam C#, Anda bisa membuat program yang lebih efisien, reusable, dan scalable!