C # Abstrakt klasseundervisning: Hvad er abstraktion med eksempel?

Indholdsfortegnelse:

Anonim

Hvad er abstrakt klasse i C #?

Abstrakt klasse kan aldrig instantieres og er markeret med nøgleordet abstrakt. En abstrakt klasse indeholder nul eller flere abstrakte metoder i den. Abstrakt klasse fungerer som en basisklasse og er designet til at blive arvet af underklasser, der enten implementerer eller enten tilsidesætter dens metode.

Lad os lære abstrakt klasse i C # med eksemplet nedenfor. Nedenfor er definitionen af ​​en klasse kaldet 'Animal'. Når klassen 'Animal' er defineret, er der intet kendt om dyret, hvad enten det er en hund eller en kat. Metoden kaldet beskrivelse er kun en generisk metode, der er defineret for klassen.

Nu når det vides, hvad dyret nøjagtigt skal være, opretter vi en anden klasse, der arver basisklassen. Hvis vi ved, at dyret faktisk er en hund, opretter vi hundeklasse, som arver hovedklassen. Hovedforskellen her er, at hundeklassen ikke kan ændre definitionen af ​​beskrivelsesmetoden for dyreklassen. Det skal definere sin egen C # abstrakte metode kaldet Hundebeskrivelse. Dette er det grundlæggende koncept for C # abstrakte klasser.

Lad os se abstrakt klasse i C # med eksempel i realtid om, hvordan vi kan ændre vores kode til at inkludere en C # abstrakt klasse. Bemærk, at vi ikke kører koden, fordi der ikke er noget, der kan køres ved hjælp af en C # abstraktionsklasse.

Trin 1) Lad os som et første trin oprette en abstrakt klasse. Klassen hedder Tutorial og har kun en metode. Al koden skal skrives i Program.cs-filen.

Kode Forklaring: -

  1. Vi definerer først den abstrakte klasse. Bemærk brugen af ​​det abstrakte nøgleord. Dette bruges til at betegne, at klassen er en abstrakt klasse.
  2. Dernæst definerer vi vores metode, der ikke gør noget. Metoden skal have nøgleordet kaldet virtuelt. Det betyder, at metoden ikke kan ændres af barneklassen. Dette er et grundlæggende krav til enhver abstrakt klasse.

Trin 2) Lad os nu tilføje vores børneklasse. Denne kode føjes til Program.cs-filen.

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();}}}

Der er intet usædvanligt ved denne kode. Vi definerer bare en klasse kaldet 'Guru99Tutorial', som arver den abstrakte tutorial-klasse. Vi definerer derefter de samme metoder, som vi har brugt fra før.

Bemærk: Her kan vi ikke ændre definitionen af ​​Set-metoden, der blev defineret i klassen Tutorial. I klassen Tutorial havde vi defineret en metode kaldet 'Set' (offentligt virtuelt ugyldigt sæt ()). Da metoden var en del af den abstrakte klasse C #, har vi ikke lov til at definere Set-metoden igen i Guru99Tutorial-klassen.

Resumé

  • En abstrakt klasse i C-skarpt er en basisklasse, som har de grundlæggende krav til, hvordan en klasse skal se ud. Det er ikke muligt for barneklassen at arve baseklassens metoder.