Menguasai Pewarisan & Polimorfisme C#: Contoh Kode Praktis
Apa Itu Pewarisan dalam C#?
Pewarisan adalah dasar desain berorientasi objek C#. Ini memungkinkan kelas anak untuk secara otomatis menerima field dan metode dari kelas induk, sambil masih mengizinkan anak untuk mengganti atau memperluas perilaku tersebut. Ini mempromosikan penggunaan kembali kode, menyederhanakan pemeliharaan, dan membentuk hierarki yang jelas.
Mendefinisikan kelas induk dan anak.
Anak mewarisi anggota induk.
Anak dapat mengubah perilaku yang diwarisi.
Anak dapat menambahkan anggotanya sendiri.
Contoh Pewarisan C#
Di bawah ini adalah demonstrasi langkah demi langkah yang menunjukkan cara mengimplementasikan pewarisan dan menggunakan anggota protected.
Langkah 1 – Modifikasi Kelas Dasar
Buka Tutorial.cs dan ubah kelas Tutorial sehingga field utamanya adalah protected:
Menggunakan protected memastikan bahwa hanya kelas turunan yang dapat mengakses field ini secara langsung.
Langkah 2 – Buat Kelas Turunan
Sisipkan kode berikut ke Tutorial.cs setelah definisi kelas dasar:
Penjelasan:
Deklarasikan Guru99Tutorial sebagai anak dari Tutorial menggunakan sintaks titik dua (:).
Tambahkan metode RenameTutorial yang menetapkan nilai baru ke TutorialName.
Karena TutorialName adalah protected, Guru99Tutorial dapat mengaksesnya meskipun tidak secara eksplisit dideklarasikan di sana.
Langkah 3 – Gunakan Kelas Turunan di Program.cs
Ganti isi Program.cs dengan berikut:
using System; namespace DemoApplication { public class Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public string GetTutorial() { return TutorialName; } } public class Guru99Tutorial : Tutorial { public void RenameTutorial(string pNewName) { TutorialName = pNewName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.RenameTutorial(".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Penjelasan:
Program membuat instance Guru99Tutorial, bukan kelas dasar Tutorial.
Ia memanggil RenameTutorial untuk mengubah judul.
Meski GetTutorial didefinisikan di kelas dasar, instance turunan dapat memanggilnya secara langsung.
Menjalankan kode ini mencetak:
Apa Itu Polimorfisme dalam C#?
Polimorfisme memungkinkan satu antarmuka untuk mewakili bentuk yang berbeda. Dalam C#, ini sering muncul sebagai overloading atau overriding metode, yang memungkinkan nama metode yang sama untuk melakukan tugas yang berbeda berdasarkan parameter atau konteks.
Contoh Polimorfisme C#
Kami akan menunjukkan overloading metode dalam kelas yang sama.
Langkah 1 – Perbarui Kelas Dasar
Modifikasi Tutorial.cs seperti yang ditunjukkan:
Perubahan utama:
Metode SetTutorial sekarang memiliki dua overload – satu yang menerima int dan string, dan yang lain hanya menerima string.
Kedua overload menetapkan nilai ke field yang sesuai.
Langkah 2 – Uji di Program.cs
Ganti Program.cs dengan kode berikut:
using System; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public void SetTutorial(string pName) { TutorialName = pName; } public string GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor = new Tutorial(); pTutor.SetTutorial(1, "First Tutorial"); Console.WriteLine(pTutor.GetTutorial()); pTutor.SetTutorial("Second Tutorial"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Penjelasan:
Panggilan pertama melewatkan id dan name ke overload dua parameter.
Panggilan kedua melewatkan hanya name, memanggil overload satu parameter.
Konsol menampilkan:
Untuk skenario canggih, Anda dapat menambahkan metode GetTutorialID untuk mengambil ID secara terpisah.
Ringkasan
Pewarisan memungkinkan kelas anak untuk mewarisi dan memperluas anggota induk.
Polimorfisme, terutama overloading metode, memungkinkan nama metode untuk menyesuaikan dengan himpunan parameter yang berbeda.
Kedua konsep ini penting untuk kode C# yang bersih, mudah dipelihara, dan dapat digunakan kembali.