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.

Якщо наведений вище код введено належним чином і програма виконана успішно, буде показано наступний вихід.

вихід:

Приклад успадкування C#

З результату ми чітко бачимо, що поле TutorialName було перейменовано на «.Net by Guru99». Це стало можливим завдяки методу RenameTutorial, викликаному дочірнім класом.

Що таке поліморфізм у C#?

Поліморфізм у C# — це концепція ООП, де одне ім’я може мати багато форм. Наприклад, у вас є смартфон для спілкування. Режим спілкування, який ви виберете, може бути будь-яким. Це може бути дзвінок, текстове повідомлення, графічне повідомлення, лист тощо. Отже, мета спільна, тобто спілкування, але підхід у них різний. Це називається поліморфізмом.

Ви краще зрозумієте поліморфізм 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#

З результату ми чітко бачимо, що обидва методи викликано успішно. Через це на консоль було надіслано рядки «First Tutorial» і «Second Tutorial».

Підсумки

  • Спадкування – це те, що дочірній клас успадковує поля та методи батьківського класу. Тоді дочірній клас також може визначати власні методи.
  • Поліморфізм в C# це концепція ООП, де одне ім’я може мати багато форм.