C # Наследяване & Полиморфизъм с примери

Съдържание:

Anonim

В този урок ще научите -

  • Наследяване
  • Полиморфизъм

Какво е наследяване в C #?

Наследяването е важна концепция в C #. Наследяването е концепция, в която дефинирате родителски класове и детски класове.

Детските класове наследяват методи и свойства на родителския клас, но в същото време те могат също така да модифицират поведението на методите, ако е необходимо. Детският клас може също да дефинира собствени методи, ако е необходимо.

Ще получите по-добро разбиране, ако видим това действие.

Нека сега видим как можем да включим концепцията за наследяване в нашия код.

Стъпка 1) Първата стъпка е да промените кода за нашия урок. В тази стъпка добавяме кода по-долу към файла Tutorial.cs.

Имайте предвид, че сега трябва да добавим модификатора за достъп на 'protected' както към полето TutorialID, така и към TutorialName.

Не забравяйте, че споменахме този модификатор на достъп в урока за модификатора на достъпа. Е, тук можете да видите целта да имате това. Само когато имате този модификатор на достъп (защитен), дъщерният клас ще може да използва полетата на родителския клас.

Стъпка 2) Втората стъпка е да добавите новия ни детски клас. Името на този клас ще бъде "Guru99Tutorial". В тази стъпка добавяме кода по-долу към файла Tutorial.cs. Кодът трябва да бъде поставен след дефиницията на класа на урока.

Обяснение на кода: -

  1. Първата стъпка е да създадете детски клас Guru99Tutorial. Трябва също да споменем, че този клас ще бъде детски клас на урока. Това се прави с ключовата дума ':'.
  2. След това дефинираме метод, наречен RenameTutorial. Тя ще се използва за преименуване на полето TutorialName. Този метод приема низова променлива, която съдържа новото име на урока.
  3. След това присвоихме параметъра pNewName на полето TutorialName.

    Забележка : - Въпреки че не сме дефинирали полето TutorialName в класа "Guru99Tutorial", все още имаме достъп до това поле. Това се дължи на факта, че "Guru99Tutorial" е дъщерна класа на урока. И тъй като направихме полетата от класа на урока защитени, те могат да бъдат достъпни от този клас.

Стъпка 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{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'. Обърнете внимание, че този път не създаваме обект от класа на урока.
  2. Използваме метода RenameTutorial на класа Guru99Tutorial, за да променим полето TutorialName. Предаваме низа ".Net by Guru99" на метода RenameTutorial.
  3. След това извикваме метода GetTutorial. Имайте предвид, че въпреки че този метод не е дефиниран в класа Guru99Tutorial, ние все още имаме достъп до този метод. След това изходът на метода GetTutorial се показва на конзолата чрез метода Console.WriteLine.

Ако горният код е въведен правилно и програмата се изпълни успешно, ще се покаже следният изход.

Изход:

От изхода можем ясно да видим, че полето TutorialName е преименувано на ".Net от Guru99". Това стана възможно чрез метода RenameTutorial, извикан от дъщерния клас.

Какво е полиморфизъм в 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();}}}

Обяснение на кода: -

  1. В първата стъпка използваме метода SetTutorial с 2 параметъра. Където предаваме както TutorialID, така и TutorialName на този метод.
  2. Във втората стъпка сега извикваме метода SetTutorial само с един параметър. Ние просто предаваме TutorialName на този метод.

Ако горният код е въведен правилно и програмата се изпълни, ще се покаже следният изход. Ако в случай, че искате да извлечете и идентификатора на урока заедно с името на урока, следвайте стъпката по-долу

  1. Създайте отделен метод, наречен public int GetTutorialID
  2. В този метод напишете кодовия ред "return TutorialID." Това може да се използва за връщане на TutorialID към извикващата програма.

Изход:

От изхода можем ясно да видим, че и двата метода са били извикани успешно. Поради това на конзолата бяха изпратени низовете „Първи урок“ и „Втори урок“.

Обобщение

  • Наследяването е мястото, където дъщерен клас наследява полетата и методите на родителския клас. Тогава детският клас може също да дефинира свои собствени методи.
  • Полиморфизмът е концепция за ООП, при която едно име може да има много форми.