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
Hewan
memiliki propertiNama
dan methodMakan()
. - Class
Kucing
mewarisi dariHewan
sehingga otomatis memiliki properti dan methodMakan()
. - Class
Kucing
juga 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:
virtual
pada methodSuara()
di superclass memungkinkan subclass untuk meng-override.override
digunakan di subclassKucing
untuk 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
interface
jika 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
sealed
untuk 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!