Inheritance (Warisan) pada Bahasa Pemrograman C#
Dalam C#, inheritance (pewarisan) adalah fitur yang memungkinkan sebuah class mewarisi properti dan method dari class lain. Dengan inheritance, kita dapat mengurangi duplikasi kode, meningkatkan reusability, dan menciptakan struktur yang lebih modular.
Artikel ini akan membahas apa itu inheritance dalam C#, cara menggunakannya, serta contoh implementasinya dalam berbagai skenario pemrograman.
1. Apa Itu Inheritance dalam C#?
Inheritance memungkinkan kita untuk membuat class baru berdasarkan class yang sudah ada. Class yang mewarisi disebut child class (subclass), sedangkan class yang diwarisi disebut parent class (superclass).
Ciri-Ciri Inheritance
✅ Meningkatkan reusability karena subclass dapat menggunakan kembali kode dari superclass.
✅ Mendukung hierarki class yang lebih terstruktur.
✅ Subclass dapat menambahkan atau mengganti method dari superclass.
Sintaks Dasar Inheritance
class ParentClass {
// Properti dan method parent
}
class ChildClass : ParentClass {
// Mewarisi semua properti dan method dari ParentClass
}
2. Contoh Inheritance dalam C#
2.1 Contoh Dasar Pewarisan
using System;
// Superclass (Parent)
class Hewan {
public string Nama;
public void Makan() {
Console.WriteLine(Nama + " sedang makan.");
}
}
// Subclass (Child)
class Kucing : Hewan {
public void Mengeong() {
Console.WriteLine(Nama + " mengeong: Meow!");
}
}
class Program {
static void Main() {
Kucing kucing1 = new Kucing();
kucing1.Nama = "Milo";
kucing1.Makan();
kucing1.Mengeong();
}
}
Output:
Milo sedang makan.
Milo mengeong: Meow!
Penjelasan:
- Class
Hewanmemiliki propertiNamadan methodMakan(). - Class
Kucingmewarisi dariHewansehingga otomatis memiliki properti dan methodMakan(). - Class
Kucingjuga memiliki method tambahanMengeong().
3. Menggunakan base dalam Inheritance
Keyword base digunakan untuk mengakses member dari superclass di dalam subclass.
class Hewan {
public string Nama;
public Hewan(string nama) {
Nama = nama;
}
public void Makan() {
Console.WriteLine(Nama + " sedang makan.");
}
}
class Kucing : Hewan {
public Kucing(string nama) : base(nama) {}
}
Output:
Milo sedang makan.
Penjelasan:
base(nama)memanggil constructor dari superclassHewan.
4. Method Overriding dalam Inheritance
Subclass bisa mengganti (override) 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 Program {
static void Main() {
Hewan hewan1 = new Hewan();
hewan1.Suara(); // Output: Hewan mengeluarkan suara.
Kucing kucing1 = new Kucing();
kucing1.Suara(); // Output: Meow! Meow!
}
}
Penjelasan:
virtualpada methodSuara()di superclass memungkinkan subclass untuk meng-override.overridedigunakan di subclassKucinguntuk mengganti implementasi default.
5. Sealed Class dan Method dalam Inheritance
Jika kita ingin mencegah class lain mewarisi sebuah class, gunakan sealed.
sealed class Hewan {
public void Info() {
Console.WriteLine("Ini adalah class hewan.");
}
}
Jika kita ingin mencegah method tertentu di-override, gunakan sealed pada method-nya:
class Hewan {
public virtual void Suara() {
Console.WriteLine("Hewan berbunyi.");
}
}
class Kucing : Hewan {
public sealed override void Suara() {
Console.WriteLine("Meow!");
}
}
sealed override memastikan bahwa subclass lain tidak bisa mengganti method Suara().
6. Kapan Harus Menggunakan Inheritance?
✅ Gunakan inheritance jika:
- Ingin menggunakan kembali kode dari superclass.
- Ada hubungan is-a antara class (misalnya
Kucing is-a Hewan). - Ingin membuat hierarki objek dengan fitur yang sama.
❌ Jangan gunakan inheritance jika:
- Tidak ada hubungan jelas antara class (gunakan
interfacejika perlu). - Subclass hanya menggunakan sebagian kecil fitur superclass (gunakan komposisi daripada pewarisan).
7. Kesimpulan
- Inheritance memungkinkan class mewarisi properti dan method dari class lain.
- Subclass bisa menambahkan method baru atau mengganti method superclass menggunakan
override. - Gunakan
sealeduntuk mencegah pewarisan lebih lanjut. - Inheritance membuat kode lebih modular, reusable, dan mudah dipelihara.
Dengan memahami Inheritance dalam C#, Anda bisa membangun struktur program yang lebih baik, lebih terorganisir, dan lebih efisien!