C# Abstract Class-zelfstudie met voorbeeld: Wat is abstractie?
Wat is abstracte klasse in C#?
Abstracte klasse kan nooit worden geïnstantieerd en wordt gemarkeerd 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 overgenomen door subklassen die de methode ervan implementeren of overschrijven.
Laten we abstracte klasse in C# leren met het onderstaande voorbeeld. Hieronder vindt u de definitie van een klasse met de naam 'Animal'. Wanneer de klasse 'Dier' wordt gedefinieerd, is er niets bekend over het dier, of het nu een hond of een kat is. De methode genaamd beschrijving is slechts een generieke methode die voor de klasse is gedefinieerd.
Als nu bekend is wat het Dier precies gaat worden, creëren we een andere klasse die de basisklasse erft. Als we weten dat het dier in feite een hond is, creëren we de klasse Hond die de hoofdbasisklasse erft. Het belangrijkste verschil hier is dat de klasse Dog de definitie van de Descriptionmethode van de klasse Animal. Het moet zijn eigen abstracte C#-methode definiëren, genaamd Dog-Description. Dit is het basisconcept van abstracte C#-klassen.
Maak een abstracte klasse in C#
Laten we de abstracte klasse in C# bekijken met realtime voorbeelden van hoe we onze code kunnen wijzigen om een abstracte C#-klasse op te nemen. Houd er rekening mee dat we de code niet zullen uitvoeren, omdat er niets is dat kan worden uitgevoerd met behulp van een C#-abstractieklasse.
Stap 1) Laten we als eerste stap een abstracte klasse maken. De klasse heet Tutorial en heeft slechts één methode. Alle code moet in het Program.cs-bestand worden geschreven.
Code-uitleg: -
- 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 sleutelwoord virtual hebben. Dit betekent dat de methode niet kan worden gewijzigd door de onderliggende klasse. Dit is een basisvereiste voor elke abstracte klasse.
Stap 2) Laten we nu onze kinderklasse toevoegen. Deze code wordt toegevoegd aan het Program.cs-bestand.
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. Vervolgens definiëren we dezelfde methoden die we al eerder gebruikten.
Opmerking:
Hier kunnen we de definitie van de Set-methode die in de klasse Tutorial is gedefinieerd niet wijzigen. In de klasse Tutorial 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.
Samenvatting
Een abstracte les in C scherp is een blauwdruk voor andere klassen, gemarkeerd met de abstract
sleutelwoord. Het kan niet direct worden geïnstantieerd en kan abstracte methoden bevatten die afgeleide klassen moeten implementeren. Abstracte klassen dwingen een consistente structuur af over subklassen terwijl ze specifieke functionaliteit toestaan. Dit concept wordt vaak gebruikt om basisgedragingen te definiëren en codeflexibiliteit te garanderen door overerving.