Ce este clasa abstractă în C #?
Clasa Abstract nu poate fi niciodată instanțiată și este marcată de cuvântul cheie abstract. O clasă abstractă conține zero sau mai multe metode abstracte în ea. Clasa abstractă acționează ca o clasă de bază și este concepută pentru a fi moștenită de subclasele care fie implementează, fie îi anulează metoda.
Să învățăm clasa abstractă în C # cu un exemplu dat mai jos. Mai jos este definiția unei clase numită „Animal”. Când este definită clasa „Animal”, nu se știe nimic despre animal, indiferent dacă este un câine sau o pisică. Metoda numită descriere este doar o metodă generică definită pentru clasă.
Acum, când se știe ce anume va fi Animalul, creăm o altă clasă care moștenește clasa de bază. Dacă știm că animalul este de fapt un câine, creăm clasa de câine care moștenește clasa de bază principală. Diferența cheie aici este că clasa Dog nu poate schimba definiția metodei de descriere a clasei Animal. Trebuie să-și definească propria metodă abstractă C # numită Dog-Description. Acesta este conceptul de bază al claselor abstracte C #.
Să vedem clasa abstractă în C # cu un exemplu în timp real despre modul în care ne putem schimba codul pentru a include o clasă abstractă C #. Rețineți că nu vom rula codul, deoarece nu există nimic care să poată fi rulat folosind o clasă de abstractizare C #.
Pasul 1) Ca prim pas, să creăm o clasă abstractă. Clasa se va numi Tutorial și va avea doar o singură metodă. Tot codul trebuie să fie scris în fișierul Program.cs.
Cod Explicație: -
- Mai întâi definim clasa abstractă. Rețineți utilizarea cuvântului cheie abstract. Aceasta este utilizată pentru a indica faptul că clasa este o clasă abstractă.
- În continuare, ne definim metoda care nu face nimic. Metoda trebuie să aibă cuvântul cheie numit virtual. Aceasta înseamnă că metoda nu poate fi schimbată de clasa copil. Aceasta este o cerință de bază pentru orice clasă abstractă.
Pasul 2) Acum să adăugăm clasa noastră pentru copii. Acest cod este adăugat în fișierul 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();}}}
Nu există nimic excepțional în acest cod. Tocmai definim o clasă numită „Guru99Tutorial” care moștenește clasa Tutorial abstract. Apoi definim aceleași metode pe care le-am folosit înainte.
Notă: Aici nu putem modifica definiția metodei Set care a fost definită în clasa Tutorial. În clasa Tutorial am definit o metodă numită „Set” (public virtual void Set ()). Deoarece metoda a făcut parte din clasa abstractă C #, nu avem voie să definim din nou metoda Set în clasa Guru99Tutorial.