บทช่วยสอนคลาสนามธรรม C # พร้อมตัวอย่าง: นามธรรมคืออะไร

Abstract Class ใน C# คืออะไร?

คลาสนามธรรม ไม่สามารถสร้างอินสแตนซ์ได้และถูกทำเครื่องหมายด้วยคำหลักนามธรรม คลาสนามธรรมมีวิธีการเชิงนามธรรมเป็นศูนย์หรือมากกว่านั้น คลาสนามธรรมทำหน้าที่เป็นคลาสพื้นฐานและได้รับการออกแบบให้สืบทอดโดยคลาสย่อยที่นำไปใช้หรือแทนที่เมธอดของมัน

มาเรียนรู้คลาสนามธรรมใน C# ด้วยตัวอย่างด้านล่าง ด้านล่างนี้เป็นคำจำกัดความของคลาสที่เรียกว่า 'สัตว์' เมื่อกำหนดคลาส 'สัตว์' แล้ว จะไม่มีใครรู้เกี่ยวกับสัตว์ตัวนั้นเลย ไม่ว่าจะเป็นสุนัขหรือแมว วิธีการที่เรียกว่า description เป็นเพียงวิธีการทั่วไปที่กำหนดไว้สำหรับชั้นเรียน

คลาสนามธรรมใน C #

ตอนนี้เมื่อรู้แล้วว่า Animal จะเป็นเช่นไร เราก็สร้างคลาสอื่นขึ้นมาซึ่งจะสืบทอดคลาสพื้นฐาน หากเรารู้ว่าสัตว์นั้นเป็นสุนัขจริงๆ เราจะสร้างคลาส Dog ซึ่งสืบทอดคลาสพื้นฐานหลัก ข้อแตกต่างที่สำคัญคือคลาส Dog ไม่สามารถเปลี่ยนคำจำกัดความของคลาสได้ Descriptวิธีไอออนของชั้นเรียนสัตว์ มันจะต้องกำหนดวิธีนามธรรม C# ของตัวเองที่เรียกว่า Dog-Descriptไอออน. นี่คือแนวคิดพื้นฐานของคลาสนามธรรม C#

คลาสนามธรรมใน C #

สร้างคลาสนามธรรมใน C#

มาดูคลาสนามธรรมใน C# พร้อมตัวอย่างแบบเรียลไทม์ว่าเราจะเปลี่ยนโค้ดของเราให้รวมคลาสนามธรรม C# ได้อย่างไร โปรดทราบว่าเราจะไม่เรียกใช้โค้ด เนื่องจากไม่มีสิ่งใดที่สามารถเรียกใช้โดยใช้คลาสนามธรรม C# ได้

ขั้นตอน 1) ในขั้นแรก เรามาสร้างคลาสนามธรรมกันดีกว่า ชั้นเรียนจะเรียกว่า Tutorial และจะมีเพียงวิธีเดียวเท่านั้น รหัสทั้งหมดจะต้องเขียนลงในไฟล์ Program.cs

สร้างคลาสนามธรรมใน C#

คำอธิบายรหัส:-

  1. ก่อนอื่นเรากำหนดคลาสนามธรรม สังเกตการใช้คำสำคัญที่เป็นนามธรรม สิ่งนี้ใช้เพื่อแสดงว่าคลาสนั้นเป็นคลาสนามธรรม
  2. ต่อไป เรากำลังกำหนดวิธีการของเราที่ไม่ทำอะไรเลย วิธีการจะต้องมีคำสำคัญที่เรียกว่าเสมือน ซึ่งหมายความว่าเมธอดไม่สามารถเปลี่ยนแปลงได้โดยคลาสย่อย นี่เป็นข้อกำหนดพื้นฐานสำหรับคลาสนามธรรม

ขั้นตอน 2) ตอนนี้เรามาเพิ่มคลาสลูกของเรากันดีกว่า รหัสนี้ถูกเพิ่มลงในไฟล์ Program.cs

สร้างคลาสนามธรรมใน C#

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() 
  {
      
  }
 }
  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(); 
  }
 }
}

ไม่มีอะไรพิเศษเกี่ยวกับรหัสนี้ เราเพิ่งกำหนดคลาสที่เรียกว่า 'Guru99Tutorial' ซึ่งสืบทอดคลาส Tutorial แบบนามธรรม จากนั้นเราก็กำหนดวิธีการแบบเดียวกับที่เราใช้เมื่อก่อน

หมายเหตุ
ที่นี่เราไม่สามารถเปลี่ยนคำจำกัดความของวิธีการ Set ที่กำหนดไว้ในคลาส Tutorial ได้ ในคลาสการสอน เราได้กำหนดวิธีการที่เรียกว่า 'Set' (public virtual void Set()) เนื่องจากวิธีนี้เป็นส่วนหนึ่งของคลาสนามธรรม C# เราจึงไม่ได้รับอนุญาตให้กำหนดวิธีการ Set อีกครั้งในคลาส Guru99Tutorial

สรุป

คลาสนามธรรมใน ซี ชาร์ป เป็นแบบแปลนสำหรับคลาสอื่น ๆ ที่มีเครื่องหมาย abstract คำสำคัญ ไม่สามารถสร้างอินสแตนซ์ได้โดยตรงและอาจรวมถึงวิธีการแบบนามธรรมที่คลาสที่สืบทอดมาต้องนำไปใช้ คลาสแบบนามธรรมบังคับใช้โครงสร้างที่สอดคล้องกันในคลาสย่อยในขณะที่อนุญาตให้มีฟังก์ชันการทำงานเฉพาะ แนวคิดนี้มักใช้เพื่อกำหนดพฤติกรรมพื้นฐานและรับรองความยืดหยุ่นของโค้ดผ่านการสืบทอด