C# Наслідування та поліморфізм із прикладами програм
⚡ Розумний підсумок
Успадкування та поліморфізм у C# – це два основні об'єктно-орієнтовані принципи. Успадкування дозволяє дочірньому класу повторно використовувати поля та методи батьківського класу, тоді як поліморфізм дозволяє одному імені методу приймати багато форм.

Що таке успадкування в C#?
Спадкування є важливою концепцією C#. Спадкування — це концепція, у якій ви визначаєте батьківські класи та дочірні класи. Дочірні класи успадковують методи та властивості батьківського класу, але в той же час вони також можуть змінювати поведінку методів, якщо потрібно. Дочірній клас також може визначати власні методи, якщо потрібно.
Давайте краще зрозуміємо успадкування C# на прикладі програми:
Приклад успадкування C#
Давайте тепер подивимося, як ми можемо включити концепцію успадкування в наш код.
Крок 1) Першим кроком є зміна коду для нашого навчального класу. На цьому кроці ми додаємо наведений нижче код до файлу Tutorial.cs.
Зауважте, що зараз нам потрібно додати модифікатор доступу «protected» до полів TutorialID і TutorialName.
Пам’ятайте, що ми згадували цей модифікатор доступу в Посібник з модифікатора доступуНу, тут ви можете побачити сенс цього. Тільки за наявності цього модифікатора доступу (захищеного), дочірній клас зможе використовувати поля батьківського класу.
Крок 2) Другий крок – додати наш новий дочірній клас. Назва цього класу буде «Guru99Tutorial”. На цьому кроці ми додаємо наведений нижче код до файлу Tutorial.cs. Код слід розмістити після визначення класу Tutorial.
Code Пояснення:
- Перший крок — створити GuruДочірній клас 99Tutorial. Також слід зазначити, що цей клас буде дочірнім класом класу Tutorial. Це робиться за допомогою ключового слова ':'.
- Далі ми визначаємо метод RenameTutorial. Він використовуватиметься для перейменування поля TutorialName. Цей метод приймає рядкову змінну, яка містить нову назву посібника.
- Потім ми призначили параметр pNewName до поля TutorialName. Примітка:: – Навіть якщо ми не визначили поле TutorialName у «GuruУ класі «99Tutorial» ми все ще маємо доступ до цього поля. Це пов’язано з тим, що «Guru«99Tutorial» – це дочірній клас класу Tutorial. А оскільки ми зробили поля класу Tutorial захищеними, цей клас може отримати до них доступ.
Крок 3) Останній крок – змінити наш основний файл Program.cs. У нашій консольній програмі ми створимо об’єкт GuruКлас 99Tutorial. З цим об'єктом ми викличемо метод RenameTutorial. Потім ми відобразимо поле TutorialName за допомогою методу GetTutorial.
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 Пояснення:
- Перший крок — створити об'єкт для GuruКлас 99Tutorial. Це робиться за допомогою ключового слова 'new'. Зверніть увагу, що цього разу ми не створюємо об'єкт класу Tutorial.
- Ми використовуємо метод RenameTutorial з GuruКлас 99Tutorial для зміни поля TutorialName. Ми передаємо рядок “.Net by Guru99” до методу RenameTutorial.
- Потім ми викликаємо метод GetTutorial. Зауважте, що хоча цей метод не визначено в GuruУ класі 99Tutorial ми все ще можемо отримати доступ до цього методу. Вивід методу GetTutorial потім відображається в консолі через метод Console.WriteLine.
Якщо наведений вище код введено належним чином і програма виконана успішно, буде показано наступний вихід.
вихід:
З виводу чітко видно, що поле TutorialName було перейменовано на «.Net» Guru99”. Це стало можливим завдяки методу RenameTutorial, викликаному дочірнім класом.
Що таке поліморфізм у C#?
Поліморфізм in C# – це концепція ООП, де одне ім'я може мати багато форм. Наприклад, у вас є смартфон для спілкування. Режим спілкування, який ви обираєте, може бути будь-яким. Це може бути дзвінок, текстове повідомлення, графічне повідомлення, пошта тощо. Отже, мета спільна, тобто спілкування, але їхній підхід відрізняється. Це називається поліморфізмом.
Ви краще зрозумієте поліморфізм C# за прикладом програми нижче:
Приклад поліморфізму C#
Давайте тепер подивимося, як ми можемо включити концепцію поліморфізму в наш код.
Крок 1) Першим кроком є зміна коду для нашого навчального класу. На цьому кроці ми додаємо наведений нижче код до файлу Tutorial.cs.
Code Пояснення:
1 та 2) Перший крок такий самий, як і в наших попередніх прикладах. Ми зберігаємоping визначення методу SetTutorial таким, яким воно є.
3) Цей метод встановлює TutorialID і TutorialName на основі параметрів pID і pName.
4) Тут ми вносимо зміни до нашого класу, додаючи новий метод із такою ж назвою SetTutorial. Тільки цього разу ми передаємо лише один параметр, яким є pName. У цьому методі ми просто встановлюємо для поля TutorialName значення pName.
Крок 2) Останній крок – змінити наш основний файл Program.cs. У нашій консольній програмі ми створимо об’єкт Guru99Навчальний клас.
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 Пояснення:
- На першому кроці ми використовуємо метод SetTutorial із 2 параметрами. Де ми передаємо як TutorialID, так і TutorialName цьому методу.
- На другому кроці ми зараз викликаємо метод SetTutorial лише з одним параметром. Ми просто передаємо TutorialName цьому методу.
Якщо наведений вище код введено належним чином і програма запущена, буде показано наступний результат. Якщо у випадку, якщо ви хочете також отримати ідентифікатор підручника разом із назвою підручника, вам слід виконати наведений нижче крок
- Створіть окремий метод під назвою public int GetTutorialID
- У цьому методі напишіть рядок коду «повернути TutorialID». Це можна використати для повернення TutorialID програмі, що викликає.
вихід:
З результату ми чітко бачимо, що обидва методи викликано успішно. Через це на консоль було надіслано рядки «First Tutorial» і «Second Tutorial».







