Inheritance (Warisan) pada Bahasa Pemrograman C#

Inheritance (Warisan) pada Bahasa Pemrograman C#
Photo by Laura Fuhrman / Unsplash

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 properti Nama dan method Makan().
  • Class Kucing mewarisi dari Hewan sehingga otomatis memiliki properti dan method Makan().
  • Class Kucing juga memiliki method tambahan Mengeong().

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 superclass Hewan.

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 method Suara() di superclass memungkinkan subclass untuk meng-override.
  • override digunakan di subclass Kucing 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!

Read more