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 в „Guru99Tutorial“, все още имаме достъп до това поле. Това е така, защото „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 от Guru99” към метода RenameTutorial.
- След това извикваме метода GetTutorial. Обърнете внимание, че въпреки че този метод не е дефиниран в GuruВ класа 99Tutorial все още можем да осъществим достъп до този метод. Резултатът от метода GetTutorial след това се показва на конзолата чрез метода Console.WriteLine.
Ако горният код е въведен правилно и програмата е изпълнена успешно, ще се покаже следният изход.
Изход:
От резултата ясно виждаме, че полето TutorialName е преименувано на „.Net от Guru99”. Това стана възможно благодарение на метода RenameTutorial, извикан от дъщерния клас.
Какво е полиморфизъм в C#?
полиморфизъм in C# е концепция на обектно-ориентираното приложение, при която едно име може да има много форми. Например, имате смартфон за комуникация. Избраният от вас начин на комуникация може да бъде всякакъв. Може да бъде обаждане, текстово съобщение, картинно съобщение, имейл и т.н. Така че целта е обща, а именно комуникация, но подходът им е различен. Това се нарича полиморфизъм.
Ще получите по-добро разбиране на C# полиморфизма чрез примера на програмата по-долу:
Пример за полиморфизъм на C#
Нека сега да видим как можем да включим концепцията за полиморфизъм в нашия код.
Стъпка 1) Първата стъпка е да промените кода за нашия урок. В тази стъпка добавяме кода по-долу към файла Tutorial.cs.
Code Обяснение:
1 и 2) Първата стъпка е същата като в предишните ни примери. Ние сме keeping дефиницията на метода 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 към извикващата програма.
Изход:
От изхода можем ясно да видим, че и двата метода са извикани успешно. Поради това низовете „Първи урок“ и „Втори урок“ бяха изпратени до конзолата.








