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

Что такое наследование в C#?

наследование — это важная концепция C#. Наследование — это концепция, в которой вы определяете родительские и дочерние классы. Дочерние классы наследуют методы и свойства родительского класса, но в то же время они также могут при необходимости изменять поведение методов. При необходимости дочерний класс также может определять собственные методы.

Давайте лучше поймем наследование C# на примере программы:

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

Давайте теперь посмотрим, как мы можем включить концепцию наследования в наш код.

Шаг 1) Первый шаг — изменить код нашего класса Tutorial. На этом этапе мы добавляем приведенный ниже код в файл Tutorial.cs.

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

Обратите внимание, что теперь нам нужно добавить модификатор доступа «защищено» как в поле 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. Это делается с помощью ключевого слова «new». Обратите внимание, что на этот раз мы не создаем объект класса Tutorial.
  2. Мы используем метод RenameTutorial класса Guru99Tutorial, чтобы изменить поле TutorialName. Мы передаем строку «.Net by Guru99» в метод RenameTutorial.
  3. Затем мы вызываем метод GetTutorial. Обратите внимание: хотя этот метод не определен в классе Guru99Tutorial, мы все равно можем получить к нему доступ. Выходные данные метода GetTutorial затем отображаются на консоли с помощью метода Console.WriteLine.

Если приведенный выше код введен правильно и программа выполнена успешно, будет отображен следующий вывод.

Вывод:

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

Из вывода мы ясно видим, что поле TutorialName было переименовано в «.Net by Guru99». Это стало возможным благодаря методу RenameTutorial, вызываемому дочерним классом.

Что такое полиморфизм в C#?

Полиморфизм в C# — это концепция ООП, где одно имя может иметь множество форм. Например, у вас есть смартфон для связи. Выбранный вами режим связи может быть любым. Это может быть звонок, СМС, графическое сообщение, почта и т. д. Итак, цель общая, то есть общение, но подход у них разный. Это называется полиморфизмом.

Вы лучше поймете полиморфизм C#, воспользовавшись приведенным ниже примером программы:

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

Давайте теперь посмотрим, как мы можем включить концепцию полиморфизма в наш код.

Шаг 1) Первый шаг — изменить код нашего класса Tutorial. На этом этапе мы добавляем приведенный ниже код в файл 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 с двумя параметрами. Где мы передаем этому методу TutorialID и TutorialName.
  2. На втором этапе мы теперь вызываем метод SetTutorial всего с одним параметром. Мы просто передаем TutorialName этому методу.

Если приведенный выше код введен правильно и программа запущена, отобразится следующий вывод. Если вы хотите также получить идентификатор учебника вместе с именем учебника, вам следует выполнить следующий шаг.

  1. Создайте отдельный метод с именем public int GetTutorialID.
  2. В этом методе напишите строку кода «return TutorialID». Это можно использовать для возврата TutorialID вызывающей программе.

Вывод:

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

Из вывода мы ясно видим, что оба метода были вызваны успешно. Из-за этого на консоль отправлялись строки «First Tutorial» и «Second Tutorial».

Резюме

  • Наследование — это когда дочерний класс наследует поля и методы родительского класса. Дочерний класс также может определять свои собственные методы.
  • Полиморфизм в C# — это концепция ООП, в которой одно имя может иметь множество форм.