Kelas Abstrak C#: Tutorial Praktis dengan Contoh Kode
Apa Itu Kelas Abstrak dalam C#?
Sebuah kelas abstrak berfungsi sebagai cetak biru untuk kelas lain. Ia tidak dapat diinstantiate secara langsung dan ditandai dengan kata kunci abstract. Kelas abstrak biasanya berisi satu atau lebih metode abstract atau virtual yang diharapkan kelas turunan untuk mengimplementasikan atau mengganti. Mereka menyediakan perjanjian umum sambil memungkinkan kelas konkret untuk menyediakan perilaku spesifik.
Pertimbangkan contoh berikut. Kita pertama kali mendefinisikan kelas generik Animal tanpa mengetahui apakah hewan itu akan menjadi anjing, kucing, atau apa pun. Metode Description adalah tempat penampung yang akan disesuaikan oleh kelas turunan.
Saat tipe hewan spesifik diketahui, kita membuat subclass seperti Dog yang mewarisi dari Animal. Kelas Dog tidak dapat mengubah metode Description dasar; alih-alih, ia menyediakan implementasinya sendiri atau menambahkan metode baru seperti DogDescription. Ini menunjukkan konsep inti kelas abstrak C#: perjanjian dasar dengan subclass konkret yang mengisi detailnya.
Membuat Kelas Abstrak dalam C#
Di bawah ini adalah panduan langkah demi langkah untuk mendefinisikan kelas abstrak dan subclass konkret yang menggunakannya. Meskipun kita tidak akan mengeksekusi cuplikan ini dalam editor online, kode menunjukkan praktik terbaik untuk desain kelas abstrak.
Langkah 1: Definisikan Kelas Abstrak
Kita membuat kelas abstrak bernama Tutorial yang berisi satu metode virtual. Kata kunci virtual menunjukkan bahwa metode tidak dapat diganti oleh kelas turunan.
Penjelasan Kode
Kami mendeklarasikan kelas dengan kata kunci abstract untuk mencegah instantiasi langsung.
Di dalam kelas, metode Set didefinisikan sebagai public virtual void Set() sehingga subclass mewarisinya tanpa perubahan.
Langkah 2: Buat Kelas Turunan
Dalam file yang sama, kami mendefinisikan kelas konkret Guru99Tutorial yang mewarisi dari Tutorial. Subclass memperkenalkan properti dan metode sendiri sambil menghormati perjanjian yang ditetapkan oleh kelas dasar abstrak.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { abstract class Tutorial { public virtual void Set() { // Implementasi dasar (saat ini kosong) } } class Guru99Tutorial : Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public string GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1, ".Net"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Poin kunci adalah bahwa Guru99Tutorial tidak dapat mendeklarasikan ulang metode Set yang didefinisikan di Tutorial; ia harus menggunakan versi yang diwarisi apa adanya.
Ringkasan
Kelas abstrak dalam C# memberikan dasar yang kuat untuk membangun sistem yang dapat diperluas. Dengan mendeklarasikan perilaku umum dalam kelas dasar yang tidak dapat diinstantiate, pengembang memberlakukan perjanjian sambil memungkinkan subclass untuk menyediakan implementasi konkret. Pola ini mempromosikan penggunaan kembali kode, kejelasan, dan ketipingan tipe di seluruh basis kode besar.