Урок за C# абстрактен клас с пример: Какво е абстракция?
Какво е абстрактен клас в C#?
Абстрактен клас никога не може да бъде създаден и е маркиран с ключовата дума abstract. Абстрактен клас съдържа нула или повече абстрактни методи в него. Абстрактният клас действа като базов клас и е проектиран да бъде наследен от подкласове, които или прилагат, или заместват неговия метод.
Нека научим абстрактен клас в C# с примера, даден по-долу. По-долу е дефиницията на клас, наречен „Animal“. Когато е дефиниран класът „Животно“, не се знае нищо за животното, независимо дали е куче или котка. Методът, наречен описание, е просто общ метод, дефиниран за класа.
Сега, когато се знае какво точно ще бъде животното, създаваме друг клас, който наследява базовия клас. Ако знаем, че животното всъщност е Куче, създаваме клас Куче, който наследява основния базов клас. Ключовата разлика тук е, че класът Dog не може да промени дефиницията на Descriptйонен метод от клас Animal. Той трябва да дефинира собствен C# абстрактен метод, наречен Dog-Descriptйон. Това е основната концепция на C# абстрактните класове.
Създайте абстрактен клас в C#
Нека видим абстрактен клас в C# с примери в реално време за това как можем да променим кода си, за да включи C# абстрактен клас. Обърнете внимание, че няма да изпълняваме кода, защото няма нищо, което може да се изпълнява с помощта на C# абстрактен клас.
Стъпка 1) Като първа стъпка нека създадем абстрактен клас. Класът ще се нарича Tutorial и ще има само един метод. Целият код трябва да бъде написан във файла Program.cs.
Обяснение на кода:-
- Първо дефинираме абстрактния клас. Обърнете внимание на използването на абстрактната ключова дума. Това се използва, за да се посочи, че класът е абстрактен клас.
- След това дефинираме нашия метод, който не прави нищо. Методът трябва да има ключовата дума 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. В класа на урока бяхме дефинирали метод, наречен „Set“ (public virtual void Set()). Тъй като методът беше част от абстрактния клас C#, не ни е позволено да дефинираме отново метода Set в класа Guru99Tutorial.
Oбобщение
Абстрактен клас в С остър е план за други класове, отбелязан с abstract ключова дума. Не може да се инстанцира директно и може да включва абстрактни методи, които производните класове трябва да реализират. Абстрактните класове налагат последователна структура в подкласовете, като същевременно позволяват специфична функционалност. Тази концепция обикновено се използва за дефиниране на базови поведения и осигуряване на гъвкавост на кода чрез наследяване.




