Учебники

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

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

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

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

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

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

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

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

Класс C # и Объект

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

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

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

Класс C # и Объект

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

  1. Первым шагом является создание дочернего класса Guru99Tutorial. Также необходимо отметить, что этот класс будет дочерним классом класса Tutorial. Это делается с помощью ключевого слова «:».
  2. Далее мы определяем метод RenameTutorial. Он будет использоваться для переименования поля TutorialName. Этот метод принимает строковую переменную, которая содержит новое имя учебника.
  3. Затем мы присвоили параметр pNewName полю TutorialName.

    Примечание : — Хотя мы не определили поле TutorialName в классе «Guru99Tutorial», мы все еще можем получить доступ к этому полю. Это связано с тем, что «Guru99Tutorial» является дочерним классом класса Tutorial. И поскольку мы сделали поля класса Tutorial защищенными, они могут быть доступны для этого класса.

Шаг 3) Последний шаг — изменить наш основной файл Program.cs. В нашем консольном приложении мы собираемся создать объект класса Guru99Tutorial. С этим объектом мы будем вызывать метод RenameTutorial. Затем мы собираемся отобразить поле TutorialName с помощью метода GetTutorial.

Класс C # и Объект

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

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

Вывод:

Класс C # и Объект

Из результатов мы можем ясно видеть, что поле TutorialName было переименовано в «.Net by Guru99». Это стало возможным благодаря методу RenameTutorial, вызываемому дочерним классом.

Что такое полиморфизм в C #?

Полиморфизм — это концепция ООП, в которой одно имя может иметь много форм.

Например, у вас есть смартфон для общения. Режим связи, который вы выбираете, может быть любым. Это может быть звонок, текстовое сообщение, графическое сообщение, почта и т. Д. Итак, общая цель — общение, но у них другой подход. Это называется полиморфизмом.

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

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

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

Класс C # и Объект

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

1 и 2) Первый шаг такой же, как в наших предыдущих примерах. Мы сохраняем определение метода SetTutorial как есть.

3) Этот метод устанавливает TutorialID и TutorialName на основе параметров pID и pName.

4) Здесь мы вносим изменения в наш класс, где добавляем новый метод с тем же именем SetTutorial. Только на этот раз мы передаем только один параметр, который является pName. В этом методе мы просто устанавливаем поле TutorialName в pName.

Шаг 2) Последний шаг — изменить наш основной файл Program.cs. В нашем консольном приложении мы собираемся создать объект класса Guru99Tutorial.

Класс C # и Объект

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 в вызывающую программу.

Вывод:

Класс C # и Объект

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

Резюме

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