Шта је апстрактна класа у Ц #?
Апстрактна класа се никада не може инстанцирати и означена је кључном речи абстрацт. Апстрактна класа садржи нула или више апстрактних метода. Апстрактна класа делује као основна класа и замишљена је да се наследи подкласама које или примењују или замењују њен метод.
Научимо апстрактни час у Ц # са примером датим у наставку. Испод је дефиниција класе која се зове „Животиња“. Када је дефинисана класа „Животиња“, о животињи се не зна ништа, било да се ради о псу или мачки. Метода која се назива опис је само генеричка метода дефинисана за класу.
Сада када се зна шта ће тачно бити Животиња, креирамо другу класу која наслеђује основну класу. Ако знамо да је животиња заправо пас, креирамо класу пас која наслеђује главну основну класу. Кључна разлика овде је у томе што класа Дог не може променити дефиницију методе Опис класе Анимал. Мора дефинисати сопствени Ц # апстрактни метод назван Дог-Десцриптион. Ово је основни концепт апстрактних класа Ц #.
Погледајмо апстрактну класу у Ц # са примером у стварном времену како можемо да променимо наш код тако да укључује Ц # апстрактну класу. Имајте на уму да нећемо покретати код, јер не постоји ништа што се може покренути помоћу класе апстракције Ц #.
Корак 1) Као први корак, направимо апстрактну класу. Предавање ће се звати Туториал и имаће само један метод. Сав код мора бити написан у датотеци Програм.цс.
Објашњење кода: -
- Прво дефинишемо апстрактну класу. Обратите пажњу на употребу апстрактне кључне речи. Овим се означава да је класа апстрактна класа.
- Даље, ми дефинишемо нашу методу која не чини ништа. Метода мора имати кључну реч која се назива виртуелна. То значи да класа дете не може променити метод. Ово је основни услов за било који апстрактни час.
Корак 2) Хајде сада да додамо наш разред детета. Овај код се додаје у датотеку Програм.цс.
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();}}}
У овом коду нема ништа изузетно. Ми само дефинишемо класу која се зове 'Гуру99Туториал' која наслеђује апстрактну класу Туториал. Затим дефинишемо исте методе као и раније.
Напомена: Овде не можемо променити дефиницију методе Сет која је дефинисана у класи Туториал. У класи Туториал дефинисали смо методу која се зове 'Сет' (јавни виртуални воид Сет ()). Будући да је метода била део апстрактне класе Ц #, није нам дозвољено да поново дефинишемо метод Сет у класи Гуру99Туториал.