Pilih Abstract Class pada Bahasa Pemrograman C#

Pilih Abstract Class pada Bahasa Pemrograman C#
Photo by Firosnv. Photography / Unsplash

Dalam dunia pemrograman, terkadang kita butuh sebuah template dasar yang bisa diwarisi oleh class lain tapi tidak bisa dibuat objeknya secara langsung. Nah, di sinilah abstract class dalam C# berperan.

Abstract class adalah class yang tidak bisa diinstansiasi tetapi bisa menjadi dasar bagi class lain. Ini sangat berguna untuk membuat kerangka kerja (blueprint) bagi class lain agar tetap konsisten dan memiliki struktur yang seragam.

Di artikel ini, kita bakal kupas tuntas tentang apa itu abstract class, bagaimana cara menggunakannya, serta contoh penerapannya dalam berbagai situasi pemrograman. Yuk, simak sampai habis!

1. Apa Itu Abstract Class dalam C#?

Abstract class adalah class yang tidak bisa langsung dibuat objeknya, tetapi bisa diwarisi oleh class lain. Gunanya? Untuk memberikan struktur dasar bagi class turunan tanpa harus langsung mengimplementasikan fungsinya.

Ciri-Ciri Abstract Class

Tidak bisa diinstansiasi secara langsung.
Dapat memiliki method yang sudah diimplementasikan atau belum (abstract method).
Membantu dalam membuat struktur dasar yang harus diikuti oleh subclass.
Dapat memiliki field, property, dan constructor.

Sintaks Abstract Class

abstract class Hewan {
    public string Nama;
    public abstract void Bersuara(); // Abstract method
}

Penjelasan:

  • abstract class Hewan → Menandakan bahwa class ini tidak bisa langsung dibuat objeknya.
  • public abstract void Bersuara(); → Abstract method yang harus diimplementasikan di subclass.

2. Menggunakan Abstract Class dalam C#

2.1 Contoh Dasar Abstract Class

using System;

abstract class Hewan {
    public string Nama;
    public abstract void Bersuara(); // Abstract method yang harus di-override
    
    public void Info() {
        Console.WriteLine($"Hewan ini bernama {Nama}.");
    }
}

class Kucing : Hewan {
    public override void Bersuara() {
        Console.WriteLine("Meow! Meow!");
    }
}

class Program {
    static void Main() {
        Kucing kucing1 = new Kucing();
        kucing1.Nama = "Milo";
        kucing1.Info();
        kucing1.Bersuara();
    }
}

Output:

Hewan ini bernama Milo.
Meow! Meow!

Penjelasan:

  • Class Hewan adalah abstract class, jadi tidak bisa dibuat objeknya langsung.
  • Bersuara() adalah abstract method yang harus diimplementasikan oleh subclass (Kucing).
  • Subclass Kucing mengimplementasikan Bersuara() dengan memberikan output "Meow! Meow!".

3. Abstract Method dalam Abstract Class

Abstract class bisa memiliki abstract method dan non-abstract method.

  • Abstract method → Harus diimplementasikan oleh subclass.
  • Non-abstract method → Bisa langsung digunakan oleh subclass tanpa override.
abstract class Kendaraan {
    public abstract void StartMesin(); // Harus di-override di subclass
    public void Info() {
        Console.WriteLine("Ini adalah kendaraan.");
    }
}

class Mobil : Kendaraan {
    public override void StartMesin() {
        Console.WriteLine("Mesin mobil dinyalakan.");
    }
}
  • StartMesin() adalah abstract method yang harus diimplementasikan di subclass.
  • Info() adalah method biasa yang bisa langsung dipakai oleh subclass.

4. Menggunakan Constructor dalam Abstract Class

Abstract class juga bisa punya constructor, lho! Ini berguna buat inisialisasi properti yang akan diwarisi oleh subclass.

abstract class Hewan {
    public string Nama;
    public Hewan(string nama) {
        Nama = nama;
    }
    public abstract void Bersuara();
}

class Anjing : Hewan {
    public Anjing(string nama) : base(nama) {}
    public override void Bersuara() {
        Console.WriteLine("Guk! Guk!");
    }
}
  • public Hewan(string nama) → Constructor dalam abstract class.
  • base(nama) → Memanggil constructor superclass di subclass.

5. Kapan Harus Menggunakan Abstract Class?

Gunakan Abstract Class jika:

  • Ingin membuat kerangka dasar (blueprint) yang wajib diikuti oleh subclass.
  • Ada method yang harus di-override di subclass.
  • Ingin memastikan subclass memiliki struktur yang sama.

Jangan gunakan Abstract Class jika:

  • Tidak butuh pewarisan, cukup pakai class biasa.
  • Semua method sudah memiliki implementasi yang jelas, lebih baik pakai interface.

6. Abstract Class vs Interface

Banyak yang bingung perbedaan abstract class dan interface. Ini dia perbandingannya!

Perbedaan Abstract Class Interface
Pewarisan Bisa memiliki method dengan implementasi Hanya bisa mendeklarasikan method tanpa implementasi
Constructor Bisa memiliki constructor Tidak bisa memiliki constructor
Field Bisa memiliki field Tidak bisa memiliki field
Kapan digunakan? Jika ingin menyediakan method default untuk subclass Jika hanya ingin mendefinisikan kontrak tanpa implementasi

7. Kesimpulan

  • Abstract class adalah class yang tidak bisa diinstansiasi langsung, tetapi bisa diwarisi oleh subclass.
  • Digunakan untuk membuat kerangka kerja (blueprint) agar subclass tetap konsisten.
  • Abstract method dalam abstract class harus di-override oleh subclass.
  • Bisa memiliki method dengan implementasi (berbeda dengan interface).

Dengan memahami Abstract Class dalam C#, kamu bisa membangun program yang lebih rapi, fleksibel, dan mudah dikembangkan!

Read more