Наследование и полиморфизм 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# — это концепция ООП, в которой одно имя может иметь множество форм.