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

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

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

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

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

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

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

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

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

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

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

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

Code คำอธิบาย:-

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

ขั้นตอน 3) ขั้นตอนสุดท้ายคือการแก้ไขไฟล์ Program.cs หลักของเรา ในแอปพลิเคชันคอนโซลของเรา เราจะสร้างอ็อบเจ็กต์ของ... Guruคลาส 99Tutorial เราจะใช้ object นี้เรียกเมธอด 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(); 
  }
 }
}

Code คำอธิบาย:-

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

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

Output:

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

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

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

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

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

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

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

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

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

Code คำอธิบาย:-

1 & 2) ขั้นตอนแรกเหมือนกับตัวอย่างก่อนหน้านี้ เราต้อง...ping นิยามของเมธอด SetTutorial ตามที่เป็นอยู่

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

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

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

ตัวอย่างความหลากหลาย 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(); 
  }
 }
}

Code คำอธิบาย:-

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

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

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

Output:

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

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

สรุป

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

สรุปโพสต์นี้ด้วย: