การสืบทอด C # และความหลากหลายพร้อมตัวอย่างโปรแกรม

การสืบทอดใน C # คืออะไร?

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

มาทำความเข้าใจเกี่ยวกับการสืบทอด C# กันดีกว่าโดยตัวอย่างโปรแกรม:

ตัวอย่างการสืบทอด C#

ตอนนี้เรามาดูกันว่าเราจะรวมแนวคิดเรื่องการสืบทอดในโค้ดของเราได้อย่างไร

ขั้นตอน 1) ขั้นตอนแรกคือการเปลี่ยนโค้ดสำหรับคลาสการสอนของเรา ในขั้นตอนนี้ เราจะเพิ่มโค้ดด้านล่างลงในไฟล์ Tutorial.cs

ตัวอย่างการสืบทอด C#

โปรดทราบว่าตอนนี้เราจำเป็นต้องเพิ่มตัวแก้ไขการเข้าถึงของ 'protected' ให้กับทั้งฟิลด์ TutorialID และ TutorialName

โปรดจำไว้ว่าเราได้กล่าวถึงตัวแก้ไขการเข้าถึงนี้ในบทช่วยสอนตัวแก้ไขการเข้าถึง ที่นี่คุณสามารถเห็นจุดประสงค์ของการมีสิ่งนี้ เฉพาะเมื่อคุณมีตัวแก้ไขการเข้าถึงนี้ (ป้องกัน) คลาสลูกจะสามารถใช้ฟิลด์ของคลาสพาเรนต์ได้

ขั้นตอน 2) ขั้นตอนที่สองคือการเพิ่มคลาสย่อยใหม่ของเรา ชื่อของคลาสนี้จะเป็น “Guru99Tutorial” ในขั้นตอนนี้ เราจะเพิ่มโค้ดด้านล่างลงในไฟล์ Tutorial.cs ควรวางโค้ดไว้หลังคำจำกัดความของคลาส Tutorial

ตัวอย่างการสืบทอด C#

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

  1. ขั้นตอนแรกคือการสร้างคลาสย่อย Guru99Tutorial เรายังต้องพูดถึงด้วยว่าคลาสนี้จะเป็นคลาสลูกของคลาส Tutorial ทำได้โดยใช้คีย์เวิร์ด ':'
  2. ต่อไป เราจะกำหนดวิธีการที่เรียกว่า RenameTutorial มันจะใช้เพื่อเปลี่ยนชื่อฟิลด์ TutorialName เมธอดนี้ยอมรับตัวแปรสตริงซึ่งมีชื่อใหม่ของบทช่วยสอน
  3. จากนั้นเรากำหนดพารามิเตอร์ pNewName ให้กับฟิลด์ TutorialName
    หมายเหตุ: – แม้ว่าเราจะไม่ได้กำหนดฟิลด์ TutorialName ในคลาส “Guru99Tutorial” แต่เรายังคงสามารถเข้าถึงฟิลด์นี้ได้ นี่เป็นเพราะความจริงที่ว่า “Guru99Tutorial” เป็นคลาสย่อยของคลาส Tutorial และเนื่องจากเราสร้างฟิลด์ของคลาส Tutorial ให้มีการป้องกัน คลาสนี้จึงสามารถเข้าถึงได้

ขั้นตอน 3) ขั้นตอนสุดท้ายคือการแก้ไขไฟล์ Program.cs หลักของเรา ในแอปพลิเคชันคอนโซลของเรา เราจะสร้างออบเจ็กต์ของคลาส Guru99Tutorial ด้วยวัตถุนี้ เราจะเรียกวิธีการ RenameTutorial จากนั้นเราจะแสดงฟิลด์ TutorialName โดยใช้วิธี GetTutorial

ตัวอย่างการสืบทอด C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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(); 
  }
 }
}

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

  1. ขั้นตอนแรกคือการสร้างออบเจ็กต์สำหรับคลาส Guru99Tutorial ซึ่งทำได้โดยใช้คำสำคัญ 'ใหม่' โปรดทราบว่าครั้งนี้เราไม่ได้สร้างออบเจ็กต์ของคลาส Tutorial
  2. เราใช้วิธี RenameTutorial ของคลาส Guru99Tutorial เพื่อเปลี่ยนฟิลด์ TutorialName เราส่งสตริง “.Net by Guru99” ไปยังเมธอด RenameTutorial
  3. จากนั้นเราจะเรียกใช้เมธอด GetTutorial โปรดทราบว่าแม้ว่าเมธอดนี้จะไม่ได้ถูกกำหนดไว้ในคลาส Guru99Tutorial แต่เราก็ยังสามารถเข้าถึงเมธอดนี้ได้ ผลลัพธ์ของเมธอด GetTutorial จะแสดงบนคอนโซลผ่านเมธอด Console.WriteLine

หากป้อนโค้ดด้านบนถูกต้องแล้วและโปรแกรมทำงานสำเร็จจะแสดงผลลัพธ์ต่อไปนี้

Output:

ตัวอย่างการสืบทอด C#

จากผลลัพธ์ เราจะเห็นได้อย่างชัดเจนว่าฟิลด์ TutorialName ถูกเปลี่ยนชื่อเป็น “.Net by Guru99” สิ่งนี้เกิดขึ้นได้จากวิธีการ RenameTutorial ที่เรียกโดยคลาสลูก

Polymorphism ใน C # คืออะไร?

ความหลากหลาย ใน C# เป็นแนวคิดของ OOPs ที่ชื่อหนึ่งสามารถมีรูปแบบได้หลายแบบ ตัวอย่างเช่น คุณมีสมาร์ทโฟนสำหรับการสื่อสาร โหมดการสื่อสารที่คุณเลือกอาจเป็นอะไรก็ได้ อาจเป็นการโทร ข้อความ ข้อความรูปภาพ อีเมล ฯลฯ ดังนั้นเป้าหมายจึงเหมือนกัน นั่นคือการสื่อสาร แต่แนวทางของทั้งสองแตกต่างกันออกไป นี่เรียกว่า Polymorphism

คุณจะได้รับความเข้าใจที่ดีขึ้นเกี่ยวกับ C# Polymorphism จากตัวอย่างโปรแกรมด้านล่าง:

ตัวอย่างความหลากหลาย C#

ตอนนี้เรามาดูกันว่าเราจะรวมแนวคิดเรื่องความหลากหลายในโค้ดของเราได้อย่างไร

ขั้นตอน 1) ขั้นตอนแรกคือการเปลี่ยนโค้ดสำหรับคลาสการสอนของเรา ในขั้นตอนนี้ เราจะเพิ่มโค้ดด้านล่างลงในไฟล์ Tutorial.cs

ตัวอย่างความหลากหลาย C#

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

1 & 2) ขั้นตอนแรกเหมือนกับในตัวอย่างก่อนหน้านี้ เรากำลังรักษาคำจำกัดความของวิธี SetTutorial ไว้เหมือนเดิม

3) วิธีการนี้จะตั้งค่า TutorialID และ TutorialName ตามพารามิเตอร์ pID และ pName

4) นี่คือจุดที่เราทำการเปลี่ยนแปลงชั้นเรียนของเรา โดยที่เราเพิ่มวิธีการใหม่ด้วยชื่อเดียวกันของ SetTutorial เฉพาะครั้งนี้เราส่งผ่านพารามิเตอร์เดียวเท่านั้นซึ่งก็คือ pName ในวิธีนี้ เราเพียงแค่ตั้งค่าฟิลด์ของ TutorialName เป็น pName

ขั้นตอน 2) ขั้นตอนสุดท้ายคือการแก้ไขไฟล์ Program.cs หลักของเรา ในแอปพลิเคชันคอนโซลของเรา เราจะสร้างออบเจ็กต์ของคลาส Guru99Tutorial

ตัวอย่างความหลากหลาย C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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(); 
  }
 }
}

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

  1. ในขั้นตอนแรก เราใช้เมธอด SetTutorial ที่มี 2 พารามิเตอร์ โดยที่เราจะส่งทั้ง TutorialID และ TutorialName ไปยังเมธอดนี้
  2. ในขั้นตอนที่สอง เรากำลังเรียกใช้เมธอด SetTutorial ด้วยพารามิเตอร์เพียงตัวเดียว เราแค่ส่ง TutorialName ไปยังวิธีนี้

หากป้อนรหัสข้างต้นอย่างถูกต้องและรันโปรแกรม ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น หากคุณต้องการดึงรหัสบทช่วยสอนพร้อมกับชื่อบทช่วยสอนด้วย คุณควรทำตามขั้นตอนด้านล่าง

  1. สร้างวิธีการแยกต่างหากที่เรียกว่า public int GetTutorialID
  2. ในวิธีการนั้นให้เขียนโค้ดบรรทัด “return TutorialID” สามารถใช้เพื่อส่งคืน TutorialID ไปยังโปรแกรมที่เรียกได้

Output:

ตัวอย่างความหลากหลาย C#

จากผลลัพธ์ เราจะเห็นได้อย่างชัดเจนว่าทั้งสองวิธีถูกเรียกสำเร็จแล้ว ด้วยเหตุนี้ สตริง "การฝึกสอนครั้งแรก" และ "การฝึกสอนครั้งที่สอง" จึงถูกส่งไปยังคอนโซล

สรุป

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

จดหมายข่าว Guru99 รายวัน

เริ่มต้นวันใหม่ของคุณด้วยข่าวสาร AI ล่าสุดและสำคัญที่สุดที่ส่งมอบทันที