C# abstrakt kurshandledning med exempel: Vad är abstraktion?
Vad är abstrakt klass i C#?
Abstrakt klass kan aldrig instansieras och markeras med nyckelordet abstrakt. En abstrakt klass innehåller noll eller fler abstrakta metoder i den. Abstrakt klass fungerar som en basklass och är designad för att ärvas av underklasser som antingen implementerar eller antingen åsidosätter dess metod.
Låt oss lära oss abstrakt klass i C# med exemplet nedan. Nedan är definitionen av en klass som kallas "Djur". När klassen "Djur" definieras är det inget känt om djuret, vare sig det är en hund eller en katt. Metoden som kallas description är bara en generisk metod definierad för klassen.
Nu när det är känt exakt vad Djuret kommer att bli skapar vi en annan klass som ärver basklassen. Om vi vet att djuret i själva verket är en hund skapar vi hundklassen som ärver huvudbasklassen. Den viktigaste skillnaden här är att hundklassen inte kan ändra definitionen av Descriptjonmetoden av djurklassen. Den måste definiera sin egen C# abstrakt metod som kallas Dog-Descriptjon. Detta är grundkonceptet för abstrakta C#-klasser.
Skapa en abstrakt klass i C#
Låt oss se abstrakt klass i C# med realtidsexempel på hur vi kan ändra vår kod för att inkludera en abstrakt klass i C#. Observera att vi inte kommer att köra koden, eftersom det inte finns något som kan köras med en abstraktionsklass C#.
Steg 1) Som ett första steg, låt oss skapa en abstrakt klass. Klassen kommer att heta Tutorial och kommer bara att ha en metod. All kod måste skrivas i filen Program.cs.
Kodförklaring:-
- Vi definierar först den abstrakta klassen. Notera användningen av det abstrakta nyckelordet. Detta används för att ange att klassen är en abstrakt klass.
- Därefter definierar vi vår metod som inte gör något. Metoden måste ha nyckelordet virtuellt. Det innebär att metoden inte kan ändras av barnklassen. Detta är ett grundläggande krav för alla abstrakta klasser.
Steg 2) Låt oss nu lägga till vår barnklass. Denna kod läggs till i filen 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(); } } }
Det finns inget exceptionellt med den här koden. Vi definierar bara en klass som heter 'Guru99Tutorial' som ärver den abstrakta tutorialklassen. Vi definierar sedan samma metoder som vi har använt sedan tidigare.
Obs:
Här kan vi inte ändra definitionen av Set-metoden som definierades i klassen Tutorial. I klassen Tutorial hade vi definierat en metod som heter 'Set' (public virtual void Set()). Eftersom metoden var en del av abstraktklassen C# får vi inte definiera Set-metoden igen i klassen Guru99Tutorial.
Sammanfattning
En abstrakt klass i ciss är en ritning för andra klasser, märkt med abstract
nyckelord. Det kan inte instansieras direkt och kan innehålla abstrakta metoder som härledda klasser måste implementera. Abstrakta klasser tvingar fram en konsekvent struktur över underklasser samtidigt som de tillåter specifik funktionalitet. Detta koncept används ofta för att definiera basbeteenden och säkerställa kodflexibilitet genom arv.