Wat is abstracte klasse in C #?
Abstracte klasse kan nooit worden geïnstantieerd en wordt gekenmerkt door het trefwoord abstract. Een abstracte klasse bevat nul of meer abstracte methoden. De abstracte klasse fungeert als een basisklasse en is ontworpen om te worden overgeërfd door subklassen die de methode implementeren of overschrijven.
Laten we abstracte klasse leren in C # met een voorbeeld hieronder. Hieronder vindt u de definitie van een klasse met de naam 'Animal'. Wanneer de klasse 'Dier' is gedefinieerd, is er niets bekend over het dier, of het nu een hond of een kat is. De methode met de naam description is slechts een generieke methode die voor de klasse is gedefinieerd.
Als nu bekend is wat de Animal precies zal zijn, maken we een andere klasse die de basisklasse erft. Als we weten dat het dier in feite een hond is, creëren we een hondenklasse die de hoofdbasisklasse erft. Het belangrijkste verschil hier is dat de klasse Dog de definitie van de beschrijvingsmethode van de klasse Animal niet kan wijzigen. Het moet zijn eigen C # abstracte methode definiëren, genaamd Dog-Description. Dit is het basisconcept van C # abstracte klassen.
Laten we de abstracte klasse in C # bekijken met een realtime voorbeeld van hoe we onze code kunnen wijzigen om een C # abstracte klasse op te nemen. Merk op dat we de code niet zullen uitvoeren, omdat er niets is dat kan worden uitgevoerd met een C #-abstractieklasse.
Stap 1) Laten we als eerste stap een abstracte klasse maken. De klas zal Tutorial heten en zal slechts één methode hebben. Alle code moet in het Program.cs-bestand worden geschreven.
Code Verklaring: -
- We definiëren eerst de abstracte klasse. Let op het gebruik van het abstracte trefwoord. Dit wordt gebruikt om aan te geven dat de klasse een abstracte klasse is.
- Vervolgens definiëren we onze methode die niets doet. De methode moet het trefwoord virtual hebben. Dit betekent dat de methode niet kan worden gewijzigd door de kindklasse. Dit is een basisvereiste voor elke abstracte klasse.
Stap 2) Laten we nu onze kinderklasse toevoegen. Deze code wordt toegevoegd aan het bestand 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();}}}
Er is niets uitzonderlijks aan deze code. We definiëren gewoon een klasse genaamd 'Guru99Tutorial' die de abstracte Tutorial-klasse erft. We definiëren vervolgens dezelfde methoden als we van tevoren hebben gebruikt.
Opmerking: hier kunnen we de definitie van de Set-methode die is gedefinieerd in de klasse Tutorial, niet wijzigen. In de Tutorial-klasse hadden we een methode gedefinieerd met de naam 'Set' (public virtual void Set ()). Omdat de methode deel uitmaakte van de abstracte klasse C #, mogen we de Set-methode niet opnieuw definiëren in de klasse Guru99Tutorial.