Наследование и полиморфизм C# с примерами программ
⚡ Умное резюме
Наследование и полиморфизм в C# — два основных принципа объектно-ориентированного программирования. Наследование позволяет дочернему классу повторно использовать поля и методы родительского класса, а полиморфизм позволяет одному имени метода принимать множество форм.

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







