C# наследяване и полиморфизъм с примери за програми

Какво е наследяване в C#?

наследяване е важна концепция на C#. Наследяването е концепция, в която дефинирате родителски класове и дъщерни класове. Дъщерните класове наследяват методи и свойства на родителския клас, но в същото време могат да променят поведението на методите, ако е необходимо. Дъщерният клас може също така да дефинира свои собствени методи, ако е необходимо.

Нека разберем по-добре наследяването на C# чрез примерна програма:

Пример за наследяване на C#

Нека сега да видим как можем да включим концепцията за наследяване в нашия код.

Стъпка 1) Първата стъпка е да промените кода за нашия урок. В тази стъпка добавяме кода по-долу към файла Tutorial.cs.

Пример за наследяване на C#

Обърнете внимание, че сега трябва да добавим модификатора за достъп на „protected“ към полето TutorialID и TutorialName.

Не забравяйте, че споменахме този модификатор на достъп в урока за модификатор на достъп. Тук можете да видите целта на това. Само когато имате този модификатор за достъп (защитен), дъщерният клас може да използва полетата на родителския клас.

Стъпка 2) Втората стъпка е да добавим нашия нов дъщерен клас. Името на този клас ще бъде „Guru99Tutorial“. В тази стъпка добавяме кода по-долу към файла Tutorial.cs. Кодът трябва да бъде поставен след дефиницията на класа на урока.

Пример за наследяване на C#

Обяснение на кода:-

  1. Първата стъпка е да създадете дъщерния клас Guru99Tutorial. Също така трябва да споменем, че този клас ще бъде дъщерен клас на класа Tutorial. Това става чрез ключовата дума „:“.
  2. След това дефинираме метод, наречен RenameTutorial. Ще се използва за преименуване на полето TutorialName. Този метод приема низова променлива, която съдържа новото име на урока.
  3. След това присвоихме параметъра pNewName на полето TutorialName.
    Забележка: – Въпреки че не сме дефинирали полето TutorialName в класа „Guru99Tutorial“, все още имаме достъп до това поле. Това се дължи на факта, че “Guru99Tutorial” е дъщерен клас на Tutorial class. И тъй като направихме полетата на класа 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 от Guru99“ на метода RenameTutorial.
  3. След това извикваме метода GetTutorial. Имайте предвид, че въпреки че този метод не е дефиниран в класа Guru99Tutorial, ние все още имаме достъп до този метод. След това резултатът от метода GetTutorial се показва на конзолата чрез метода Console.WriteLine.

Ако горният код е въведен правилно и програмата е изпълнена успешно, ще се покаже следният изход.

Изход:

Пример за наследяване на C#

От изхода можем ясно да видим, че полето TutorialName е преименувано на „.Net от Guru99“. Това стана възможно благодарение на метода RenameTutorial, извикан от дъщерния клас.

Какво е полиморфизъм в C#?

полиморфизъм в C# е OOPs концепция, при която едно име може да има много форми. Например, имате смартфон за комуникация. Избраният от вас режим на комуникация може да бъде всякакъв. Това може да бъде обаждане, текстово съобщение, картинно съобщение, имейл и т.н. Така че целта е обща, тоест комуникация, но подходът им е различен. Това се нарича полиморфизъм.

Ще получите по-добро разбиране на C# полиморфизма чрез примера на програмата по-долу:

Пример за полиморфизъм на 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. В този метод напишете кодовия ред „връщане на TutorialID“. Това може да се използва за връщане на TutorialID към извикващата програма.

Изход:

Пример за полиморфизъм на C#

От изхода можем ясно да видим, че и двата метода са извикани успешно. Поради това низовете „Първи урок“ и „Втори урок“ бяха изпратени до конзолата.

Oбобщение

  • Наследяването е, когато дъщерен клас наследява полетата и методите на родителския клас. След това дъщерният клас може също да дефинира свои собствени методи.
  • Полиморфизъм в C# е OOPs концепция, при която едно име може да има много форми.