Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Kelas dan Metode Abstrak C#: Panduan Praktis

Menguasai Kelas dan Metode Abstrak C#

Jelajahi kelas dan metode abstrak C# melalui contoh yang jelas, pola warisan, konstruktor, dan kasus penggunaan dunia nyata.

Kelas Abstrak

Di C#, kelas abstrak berfungsi sebagai templat yang tidak dapat diinstansiasi secara langsung. Kata kunci abstract menunjukkan bahwa kelas ini dimaksudkan untuk diturunkan. Misalnya:

// Mendefinisikan kelas abstrak abstract class Language { // Fields and methods } // Mencoba membuat instance akan menghasilkan kesalahan // Language obj = new Language(); 

Kelas abstrak dapat berisi metode abstrak (deklarasi tanpa tubuh) dan metode konkret (telah diimplementasikan). Misalnya:

abstract class Language { // Metode abstrak – tidak ada tubuh public abstract void Display(); // Metode konkret – memiliki implementasi public void DisplayInfo() { Console.WriteLine("Concrete method in abstract class"); } } 

Sebelum melanjutkan, pastikan Anda nyaman dengan konsep warisan C#.


Mewarisi Kelas Abstrak

Karena Anda tidak dapat membuat instance kelas abstrak secara langsung, Anda harus membuat subclass konkret yang diturunkan darinya. Subclass mewarisi anggota kelas abstrak, memungkinkan Anda untuk menggunakannya melalui objek derived. Contoh:

using System; namespace AbstractClassDemo { abstract class Language { public void Display() { Console.WriteLine("Concrete method in abstract class"); } } // Subclass konkret class Program : Language { static void Main(string[] args) { Program prog = new Program(); prog.Display(); Console.ReadLine(); } } } 

Output

Concrete method in abstract class

Dalam contoh ini, Language adalah abstrak, sementara Program mewarisi darinya dan dapat memanggil Display(). Perhatikan bahwa kelas abstrak tidak dapat di-seal; mereka harus selalu berfungsi sebagai tipe base.

Catatan: Gunakan pola ini saat Anda perlu kontrak umum yang akan diimplementasikan oleh beberapa tipe derived.


Metode Abstrak di C#

Metode abstrak mendeklarasikan tanda tangan tanpa tubuh. Ini menyuruh subclass non-abstrak untuk menyediakan implementasi. Misalnya:

public abstract void Display();

Hanya kelas abstrak yang dapat berisi metode abstrak. Saat subclass konkret mewarisi kelas tersebut, ia harus mengoverride setiap anggota abstrak kecuali ia juga mendeklarasikan dirinya sebagai abstrak.

Contoh: Mengimplementasikan Metode Abstrak

using System; namespace AbstractClassDemo { abstract class Animal { public abstract void MakeSound(); } class Dog : Animal { public override void MakeSound() { Console.WriteLine("Bark Bark"); } } class Program { static void Main(string[] args) { Dog dog = new Dog(); dog.MakeSound(); Console.ReadLine(); } } } 

Output

Bark Bark

Di sini, Animal mendeklarasikan metode abstrak MakeSound(). Subclass konkret Dog menyediakan override, memenuhi kontrak.

Catatan: Metode abstrak secara implisit virtual; oleh karena itu, kata kunci virtual tidak diperlukan dan tidak diizinkan.


Properti Abstrak dengan Getter dan Setter

Akses abstrak memungkinkan subclass untuk menyediakan logika kustom untuk operasi get dan set properti. Contoh:

using System; namespace AbstractClassDemo { abstract class Animal { protected string name; public abstract string Name { get; set; } } class Dog : Animal { public override string Name { get { return name; } set { name = value; } } } class Program { static void Main(string[] args) { Dog dog = new Dog(); dog.Name = "Tom"; Console.WriteLine("Name: " + dog.Name); Console.ReadLine(); } } } 

Output

Name: Tom

Kelas derived mengimplementasikan properti abstrak, memungkinkan manajemen status yang terenkapsulasi.


Konstruktor di Kelas Abstrak

Kelas abstrak dapat mendefinisikan konstruktor untuk menginisialisasi state bersama untuk semua subclass. Saat instance subclass dibuat, konstruktor kelas abstrak dieksekusi pertama. Contoh:

using System; namespace AbstractClassDemo { abstract class Animal { public Animal() { Console.WriteLine("Animal Constructor"); } } class Dog : Animal { public Dog() { Console.WriteLine("Dog Constructor"); } } class Program { static void Main(string[] args) { Dog d1 = new Dog(); Console.ReadLine(); } } } 

Output

Animal Constructor Dog Constructor

Subclass juga dapat mendefinisikan destruktor jika logika pembersihan diperlukan.

Catatan: Konstruktor berguna untuk menyiapkan sumber daya umum yang diperlukan oleh semua tipe derived.


Abstraksi C# Melalui Kelas Abstrak

Kelas abstrak menyediakan mekanisme untuk abstraksi: mereka menyembunyikan detail implementasi sambil mengekspos antarmuka yang bersih. Ini menyederhanakan sistem kompleks dengan fokus pada “apa” daripada “bagaimana.”

Pertimbangkan analogi dunia nyata: sistem rem pada sepeda motor. Perilaku eksternal rem—mengurangi kecepatan atau menghentikan sepeda motor—konsisten, tetapi mekanisme dasarnya bervariasi antara model. Kelas abstrak memungkinkan setiap model untuk mengimplementasikan logika rem uniknya tanpa mengubah kontrak eksternal.

Contoh: Rem Sepeda Motor

using System; namespace AbstractClassDemo { abstract class MotorBike { public abstract void Brake(); } class SportsBike : MotorBike { public override void Brake() { Console.WriteLine("Sports Bike Brake"); } } class MountainBike : MotorBike { public override void Brake() { Console.WriteLine("Mountain Bike Brake"); } } class Program { static void Main(string[] args) { SportsBike s1 = new SportsBike(); s1.Brake(); MountainBike m1 = new MountainBike(); m1.Brake(); Console.ReadLine(); } } } 

Output

Sports Bike Brake Mountain Bike Brake

Di sini, MotorBike mendeklarasikan metode abstrak Brake(). Setiap kelas konkret sepeda motor menyediakan implementasi spesifiknya sendiri, menunjukkan polymorphism.

Catatan: Untuk abstraksi penuh—tidak ada implementasi base sama sekali—pertimbangkan untuk menggunakan antarmuka.


Bahasa C

  1. Kelas dan Objek C#: Fondasi untuk OOP yang Kuat
  2. Memahami Kelas dan Metode Parsial C#
  3. Menguasai Kelas dan Metode Tersegel di C#—Kapan Menggunakannya, Contoh Jelas, dan Tingkatkan Keamanan serta Performa Kode
  4. Kelas & Objek C++: Panduan Praktis Pemrograman Berorientasi Objek
  5. Fungsi Teman dan Kelas Teman C++: Menguasai Kontrol Akses
  6. Kelas dan Objek Java: Panduan Praktis
  7. Kelas dan Metode Abstrak Java: Panduan Lengkap
  8. Menguasai Kelas Bersarang dan Kelas Dalam Java: Jenis, Contoh, dan Praktik Terbaik
  9. Kelas Abstrak C#: Tutorial Praktis dengan Contoh Kode
  10. Menguasai Java: Memahami Objek, Kelas, dan Konsep OOP Inti