Наследование и полиморфизм C# с примерами программ
Что такое наследование в C#?
наследование — это важная концепция C#. Наследование — это концепция, в которой вы определяете родительские и дочерние классы. Дочерние классы наследуют методы и свойства родительского класса, но в то же время они также могут при необходимости изменять поведение методов. При необходимости дочерний класс также может определять собственные методы.
Давайте лучше поймем наследование C# на примере программы:
Пример наследования C#
Давайте теперь посмотрим, как мы можем включить концепцию наследования в наш код.
Шаг 1) Первый шаг — изменить код нашего класса Tutorial. На этом этапе мы добавляем приведенный ниже код в файл Tutorial.cs.
Обратите внимание, что теперь нам нужно добавить модификатор доступа «защищено» как в поле 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. Это делается с помощью ключевого слова «new». Обратите внимание, что на этот раз мы не создаем объект класса Tutorial.
- Мы используем метод RenameTutorial класса Guru99Tutorial, чтобы изменить поле TutorialName. Мы передаем строку «.Net by Guru99» в метод RenameTutorial.
- Затем мы вызываем метод GetTutorial. Обратите внимание: хотя этот метод не определен в классе Guru99Tutorial, мы все равно можем получить к нему доступ. Выходные данные метода GetTutorial затем отображаются на консоли с помощью метода Console.WriteLine.
Если приведенный выше код введен правильно и программа выполнена успешно, будет отображен следующий вывод.
Вывод:
Из вывода мы ясно видим, что поле TutorialName было переименовано в «.Net by Guru99». Это стало возможным благодаря методу RenameTutorial, вызываемому дочерним классом.
Что такое полиморфизм в C#?
Полиморфизм в C# — это концепция ООП, где одно имя может иметь множество форм. Например, у вас есть смартфон для связи. Выбранный вами режим связи может быть любым. Это может быть звонок, СМС, графическое сообщение, почта и т. д. Итак, цель общая, то есть общение, но подход у них разный. Это называется полиморфизмом.
Вы лучше поймете полиморфизм C#, воспользовавшись приведенным ниже примером программы:
Пример полиморфизма C#
Давайте теперь посмотрим, как мы можем включить концепцию полиморфизма в наш код.
Шаг 1) Первый шаг — изменить код нашего класса Tutorial. На этом этапе мы добавляем приведенный ниже код в файл 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 с двумя параметрами. Где мы передаем этому методу TutorialID и TutorialName.
- На втором этапе мы теперь вызываем метод SetTutorial всего с одним параметром. Мы просто передаем TutorialName этому методу.
Если приведенный выше код введен правильно и программа запущена, отобразится следующий вывод. Если вы хотите также получить идентификатор учебника вместе с именем учебника, вам следует выполнить следующий шаг.
- Создайте отдельный метод с именем public int GetTutorialID.
- В этом методе напишите строку кода «return TutorialID». Это можно использовать для возврата TutorialID вызывающей программе.
Вывод:
Из вывода мы ясно видим, что оба метода были вызваны успешно. Из-за этого на консоль отправлялись строки «First Tutorial» и «Second Tutorial».
Резюме
- Наследование — это когда дочерний класс наследует поля и методы родительского класса. Дочерний класс также может определять свои собственные методы.
- Полиморфизм в C# — это концепция ООП, в которой одно имя может иметь множество форм.







