Perkataan abstrak bermaksud pemikiran atau idea yang tidak mempunyai bentuk fizikalnya sendiri tetapi bertindak sebagai asas untuk perkara lain. Begitu juga konsep di sebalik kelas abstrak. Dalam artikel ini, kita akan membincangkan Kelas Abstrak dalam C#. Kelas abstrak ialah kelas khas dalam C# yang tidak boleh dijadikan instantiated, iaitu anda tidak boleh mencipta objek kelas abstrak. Tujuan kelas abstrak adalah untuk menyediakan struktur rangka untuk kelas lain untuk diperolehi. Kelas abstrak tidak mempunyai pelaksanaannya sendiri. Mereka memerlukan pembangun dan pengaturcara untuk mendapatkan daripada kelas abstrak dan membina struktur rangka, iaitu menulis pelaksanaannya. Kelas abstrak juga boleh mempunyai pengisytiharan kaedah abstrak di dalamnya. Sekali lagi, kaedah ini tidak boleh mempunyai sebarang takrifan.
Sintaks mengisytiharkan kelas dan kaedah abstrak melibatkan meletakkan kata kunci abstrak sebelum pengisytiharan. Semudah itu.
Sintaks:
abstract class ClassName { public abstract void MethodName(); }
Ingat, kaedah abstrak tidak boleh mempunyai definisi. Oleh itu, pengisytiharan kaedah abstrak berakhir dengan koma bertitik. Mereka hanya boleh diisytiharkan. Takrifan mesti disediakan dalam kelas terbitan bukan abstrak.
Kata kunci abstrak mengarahkan pengkompil bahawa kelas ialah struktur rangka kelas asas untuk dilaksanakan dalam kelas terbitan. Jika pengkompil menemui mana-mana kelas yang memperoleh kelas asas abstrak, ia menyemak sama ada semua kaedah dan sifat abstrak ditindih dan dilaksanakan dalam kelas terbitan.
Kini, anda mungkin tertanya-tanya apakah semua ini dan apakah fungsi antara muka. Jadi, bagaimanakah kelas abstrak berbeza daripada antara muka?
Mari kita fahami ini dengan contoh. Katakan kami menjalankan syarikat penerbitan dan telah mengupah beberapa editor untuk menulis lajur untuk majalah kami. Mari kita anggap mereka pakar dalam genre yang berbeza, menulis artikel untuk diterbitkan pada hari tertentu dalam seminggu dan semuanya diupah pada gaji yang sama.
Mari tentukan kelas Pekerja abstrak untuk editor kami.
Kod:
abstract class EmployeeEditors { public abstract void Genre(); public abstract string PublishDay(); public int Payment() { Console.Write(“Monthly salary is {0}$.”, 1000); } }
Kami boleh melaksanakan kaedah Pembayaran dengan mudah, dengan mengetahui bahawa ia akan menjadi sama untuk semua. Dua kaedah lain telah diisytiharkan abstrak untuk dilaksanakan oleh kelas terbitan. Seseorang boleh mengisytiharkan kelas biasa untuk setiap editor yang berasal daripada kelas abstrak dan kemudian boleh melaksanakan kaedah abstrak untuk menentukan genre dan hari. Sekarang, andaikan bahawa gaji setiap editor juga berbeza. Satu cara untuk menukar kod kami ialah mengisytiharkan kaedah Pembayaran sebagai abstrak. Cara lain ialah mengisytiharkan keseluruhan EmployeeEditor sebagai antara muka dan memberi kebebasan penuh untuk mewarisi kelas.
Public interface EmployeeEditors { public abstract void Genre(); public abstract string PublishDay(); public abstract int Payment(); }
Oleh itu, kelas abstrak ialah kelas asas untuk membina kelas lain. Manakala antara muka ialah pelan tindakan untuk kelas lain merujuk dan membina dari awal.
Terdapat peraturan tertentu untuk dipatuhi apabila bekerja dengan kelas abstrak.
Pernyataan Masalah: Mari kita ambil satu lagi contoh dunia sebenar. Andaikan anda diminta untuk mengautomasikan proses penjanaan surat tawaran untuk organisasi tertentu. Proses semasa adalah manual sepenuhnya dan memerlukan penyuntingan surat tawaran sedia ada, yang terdedah kepada ralat. Terdapat perkara tertentu yang biasa untuk semua surat tawaran, seperti lokasi kerja, masa kerja, tajuk syarikat, penjenamaan syarikat, dll. Perkara lain seperti nama pekerja, jawatan, gaji, tarikh menyertai, dll., adalah khusus untuk setiap surat tawaran.
Penyelesaian: Anda akan mereka bentuk kelas abstrak untuk tujuan di atas. Mari kita lihat caranya.
Kod:
ode: using System; abstract class OfferLetter { public abstract string Name(string name); public abstract string Designation(string designation); public abstract int Payment(int pay); public abstract string DOJ(string doj); public string CompanyName() { return "XYZ Corporation Pvt. Ltd."; } public string OfficeAddress() { return "512, Manhattan, NY"; } public string CompanyBranding() { return this.CompanyName() + " is a privately owned regsitered corporation operating \n under the license provided by the state of New York."; } public string Disclaimer() { return "This letter and its contents are confidential in nature and are intended only \n for the recipient."+ "\nIf you are not the correct recipient, kindly return it immediately \n to " + this.CompanyName() + " " + this.OfficeAddress() + "."; } } class PrintOfferLetter : OfferLetter { public override string Name(string name) { return name; } public override string Designation(string designation) { return designation; } public override int Payment(int pay) { return pay; } public override string DOJ(string doj) { return doj; } } public class Program { public static void Main() { PrintOfferLetter ltr = new PrintOfferLetter(); string empName = "Mr. ABC", designation = "Senior Consultant", doj = "20-02-2020"; int pay = 50000; Console.WriteLine(ltr.CompanyName() + " is very happy to extend this offer letter to \n" + ltr.Name(empName) + " at the designation of " + ltr.Designation(designation) + " with an annual pay of " + ltr.Payment(pay) + "$."); Console.WriteLine("\nYou are required to report at " + ltr.OfficeAddress() + " from " + ltr.DOJ(doj) + " (dd-mm-yyyy)."); Console.WriteLine("\n\n" + ltr.CompanyBranding()); Console.WriteLine("\n\n" + ltr.Disclaimer()); } }
Output:
Ringkasnya, kelas abstrak hanyalah kelas yang tidak lengkap atau separa lengkap yang boleh diperoleh oleh kelas lain dan membina logiknya di atasnya. Dalam artikel ini, kita telah melihat bagaimana kelas abstrak diisytiharkan, dan ia berfungsi. Kami melihat contoh sebenar penggunaan kelas abstrak dan cara ia berbeza daripada antara muka. Adalah disyorkan untuk mencuba dan menggunakan kelas abstrak sebanyak mungkin dalam kod anda. Ini adalah amalan penting pengaturcaraan yang baik.
Atas ialah kandungan terperinci Kelas Abstrak dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!