บทช่วยสอนคลาสนามธรรม C # พร้อมตัวอย่าง: นามธรรมคืออะไร
Abstract Class ใน C# คืออะไร?
คลาสนามธรรม ไม่สามารถสร้างอินสแตนซ์ได้และถูกทำเครื่องหมายด้วยคำหลักนามธรรม คลาสนามธรรมมีวิธีการเชิงนามธรรมเป็นศูนย์หรือมากกว่านั้น คลาสนามธรรมทำหน้าที่เป็นคลาสพื้นฐานและได้รับการออกแบบให้สืบทอดโดยคลาสย่อยที่นำไปใช้หรือแทนที่เมธอดของมัน
มาเรียนรู้คลาสนามธรรมใน C# ด้วยตัวอย่างด้านล่าง ด้านล่างนี้เป็นคำจำกัดความของคลาสที่เรียกว่า 'สัตว์' เมื่อกำหนดคลาส 'สัตว์' แล้ว จะไม่มีใครรู้เกี่ยวกับสัตว์ตัวนั้นเลย ไม่ว่าจะเป็นสุนัขหรือแมว วิธีการที่เรียกว่า description เป็นเพียงวิธีการทั่วไปที่กำหนดไว้สำหรับชั้นเรียน
ตอนนี้เมื่อรู้แล้วว่า Animal จะเป็นเช่นไร เราก็สร้างคลาสอื่นขึ้นมาซึ่งจะสืบทอดคลาสพื้นฐาน หากเรารู้ว่าสัตว์นั้นเป็นสุนัขจริงๆ เราจะสร้างคลาส Dog ซึ่งสืบทอดคลาสพื้นฐานหลัก ข้อแตกต่างที่สำคัญคือคลาส Dog ไม่สามารถเปลี่ยนคำจำกัดความของคลาสได้ Descriptวิธีไอออนของชั้นเรียนสัตว์ มันจะต้องกำหนดวิธีนามธรรม C# ของตัวเองที่เรียกว่า Dog-Descriptไอออน. นี่คือแนวคิดพื้นฐานของคลาสนามธรรม C#
สร้างคลาสนามธรรมใน C#
มาดูคลาสนามธรรมใน C# พร้อมตัวอย่างแบบเรียลไทม์ว่าเราจะเปลี่ยนโค้ดของเราให้รวมคลาสนามธรรม C# ได้อย่างไร โปรดทราบว่าเราจะไม่เรียกใช้โค้ด เนื่องจากไม่มีสิ่งใดที่สามารถเรียกใช้โดยใช้คลาสนามธรรม C# ได้
ขั้นตอน 1) ในขั้นแรก เรามาสร้างคลาสนามธรรมกันดีกว่า ชั้นเรียนจะเรียกว่า Tutorial และจะมีเพียงวิธีเดียวเท่านั้น รหัสทั้งหมดจะต้องเขียนลงในไฟล์ Program.cs
คำอธิบายรหัส:-
- ก่อนอื่นเรากำหนดคลาสนามธรรม สังเกตการใช้คำสำคัญที่เป็นนามธรรม สิ่งนี้ใช้เพื่อแสดงว่าคลาสนั้นเป็นคลาสนามธรรม
- ต่อไป เรากำลังกำหนดวิธีการของเราที่ไม่ทำอะไรเลย วิธีการจะต้องมีคำสำคัญที่เรียกว่าเสมือน ซึ่งหมายความว่าเมธอดไม่สามารถเปลี่ยนแปลงได้โดยคลาสย่อย นี่เป็นข้อกำหนดพื้นฐานสำหรับคลาสนามธรรม
ขั้นตอน 2) ตอนนี้เรามาเพิ่มคลาสลูกของเรากันดีกว่า รหัสนี้ถูกเพิ่มลงในไฟล์ Program.cs
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
คำสำคัญ ไม่สามารถสร้างอินสแตนซ์ได้โดยตรงและอาจรวมถึงวิธีการแบบนามธรรมที่คลาสที่สืบทอดมาต้องนำไปใช้ คลาสแบบนามธรรมบังคับใช้โครงสร้างที่สอดคล้องกันในคลาสย่อยในขณะที่อนุญาตให้มีฟังก์ชันการทำงานเฉพาะ แนวคิดนี้มักใช้เพื่อกำหนดพฤติกรรมพื้นฐานและรับรองความยืดหยุ่นของโค้ดผ่านการสืบทอด