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