Что такое абстрактный класс в C #?
Абстрактный класс никогда не может быть создан и помечен ключевым словом abstract. Абстрактный класс содержит ноль или более абстрактных методов. Абстрактный класс действует как базовый класс и предназначен для наследования подклассами, которые либо реализуют, либо переопределяют его метод.
Давайте изучим абстрактный класс на C # на примере, приведенном ниже. Ниже приводится определение класса под названием «Животное». Когда определен класс Animal, о животном ничего не известно, будь то собака или кошка. Метод с именем description - это просто общий метод, определенный для класса.
Теперь, когда известно, каким именно будет Animal, мы создаем другой класс, наследующий базовый класс. Если мы знаем, что животное на самом деле является собакой, мы создаем класс Dog, который наследует основной базовый класс. Ключевое отличие здесь в том, что класс Dog не может изменить определение метода Description класса Animal. Он должен определить свой собственный абстрактный метод C # под названием Dog-Description. Это основная концепция абстрактных классов C #.
Давайте посмотрим на абстрактный класс в C # с примером в реальном времени того, как мы можем изменить наш код, чтобы включить абстрактный класс C #. Обратите внимание, что мы не будем запускать код, потому что нет ничего, что можно было бы запустить с использованием класса абстракции C #.
Шаг 1) В качестве первого шага создадим абстрактный класс. Класс будет называться Tutorial и будет иметь только один метод. Весь код нужно записать в файл Program.cs.
Пояснение к коду: -
- Сначала мы определяем абстрактный класс. Обратите внимание на использование ключевого слова abstract. Это используется для обозначения того, что класс является абстрактным.
- Затем мы определяем наш метод, который ничего не делает. У метода должно быть ключевое слово virtual. Это означает, что дочерний класс не может изменить метод. Это основное требование для любого абстрактного класса.
Шаг 2) Теперь давайте добавим наш дочерний класс. Этот код добавляется в файл Program.cs.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{abstract class Tutorial{public virtual void Set(){}}class Guru99Tutorial:Tutorial{protected int TutorialID;protected string TutorialName;public void SetTutorial(int pID,string pName){TutorialID=pID;TutorialName=pName;}public String GetTutorial(){return TutorialName;}static void Main(string[] args){Guru99Tutorial pTutor=new Guru99Tutorial();pTutor.SetTutorial(1,".Net");Console.WriteLine(pTutor.GetTutorial());Console.ReadKey();}}}
В этом коде нет ничего исключительного. Мы просто определяем класс под названием «Guru99Tutorial», который наследует абстрактный класс Tutorial. Затем мы определяем те же методы, которые использовали ранее.
Примечание. Здесь мы не можем изменить определение метода Set, который был определен в классе Tutorial. В классе Tutorial мы определили метод под названием Set (общедоступный виртуальный void Set ()). Поскольку метод был частью абстрактного класса C #, нам не разрешено снова определять метод Set в классе Guru99Tutorial.