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

Содержание:

Anonim

В этом руководстве вы узнаете:

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

Что такое наследование в C #?

Наследование - важное понятие в C #. Наследование - это концепция, в которой вы определяете родительские классы и дочерние классы.

Дочерние классы наследуют методы и свойства родительского класса, но в то же время они также могут изменять поведение методов, если это необходимо. При необходимости дочерний класс также может определять собственные методы.

Вы лучше поймете, если мы увидим это действие.

Давайте теперь посмотрим, как мы можем включить концепцию наследования в наш код.

Шаг 1) Первый шаг - изменить код нашего учебного класса. На этом этапе мы добавляем приведенный ниже код в файл Tutorial.cs.

Обратите внимание, что теперь нам нужно добавить модификатор доступа «protected» как в поле TutorialID, так и в поле TutorialName.

Помните, мы упоминали этот модификатор доступа в руководстве по модификатору доступа. Что ж, здесь вы можете увидеть цель этого. Только когда у вас есть этот модификатор доступа (защищенный), дочерний класс сможет использовать поля родительского класса.

Шаг 2) Второй шаг - добавить наш новый дочерний класс. Имя этого класса будет «Guru99Tutorial». На этом этапе мы добавляем приведенный ниже код в файл Tutorial.cs. Код следует разместить после определения класса Tutorial.

Пояснение к коду: -

  1. Первый шаг - создать дочерний класс Guru99Tutorial. Мы также должны упомянуть, что этот класс будет дочерним классом класса Tutorial. Это делается с помощью ключевого слова ":".
  2. Затем мы определяем метод под названием RenameTutorial. Он будет использоваться для переименования поля TutorialName. Этот метод принимает строковую переменную, которая содержит новое имя учебника.
  3. Затем мы присвоили параметр 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{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. Обратите внимание, что на этот раз мы не создаем объект класса Tutorial.
  2. Мы используем метод RenameTutorial класса Guru99Tutorial для изменения поля TutorialName. Мы передаем строку ".Net by Guru99" методу RenameTutorial.
  3. Затем мы вызываем метод GetTutorial. Обратите внимание, что даже несмотря на то, что этот метод не определен в классе Guru99Tutorial, мы все равно можем получить доступ к этому методу. Выходные данные метода GetTutorial затем отображаются в консоли с помощью метода Console.WriteLine.

Если приведенный выше код введен правильно и программа успешно выполнена, отобразится следующий вывод.

Выход:

Из выходных данных мы ясно видим, что поле TutorialName было переименовано в «.Net by 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 с двумя параметрами. Где мы передаем этому методу как TutorialID, так и TutorialName.
  2. На втором этапе мы вызываем метод SetTutorial только с одним параметром. Мы просто передаем TutorialName этому методу.

Если приведенный выше код введен правильно и программа запущена, отобразится следующий вывод. Если в случае, если вы хотите также получить идентификатор учебного пособия вместе с именем учебного пособия, вы должны выполнить следующий шаг

  1. Создайте отдельный метод под названием public int GetTutorialID
  2. В этом методе напишите строку кода «return TutorialID». Это можно использовать для возврата TutorialID вызывающей программе.

Выход:

Из выходных данных мы ясно видим, что оба метода были вызваны успешно. Из-за этого на консоль были отправлены строки «First Tutorial» и «Second Tutorial».

Резюме

  • Наследование - это когда дочерний класс наследует поля и методы родительского класса. Затем дочерний класс также может определять свои собственные методы.
  • Полиморфизм - это концепция ООП, в которой одно имя может иметь множество форм.