Esercitazione sulla classe astratta C# con esempio: cos'è l'astrazione?

Cos'è la classe astratta in C#?

Classe astratta non può mai essere istanziato ed è contrassegnato dalla parola chiave abstract. Una classe astratta contiene zero o più metodi astratti al suo interno. La classe astratta funge da classe base ed è progettata per essere ereditata da sottoclassi che implementano o sovrascrivono il suo metodo.

Impariamo la classe astratta in C# con l'esempio fornito di seguito. Di seguito è riportata la definizione di una classe chiamata "Animale". Quando viene definita la classe 'Animale', non si sa nulla dell'animale, sia che si tratti di un cane o di un gatto. Il metodo chiamato descrizione è solo un metodo generico definito per la classe.

Classe astratta in C#

Ora, quando sappiamo cosa sarà esattamente l'Animale, creiamo un'altra classe che eredita la classe base. Se sappiamo che l'animale è in realtà un Cane, creiamo la classe Cane che eredita la classe base principale. La differenza fondamentale qui è che la classe Dog non può modificare la definizione di Descriptmetodo degli ioni della classe Animal. Deve definire il proprio metodo astratto C# chiamato Dog-Descriptione. Questo è il concetto di base delle classi astratte C#.

Classe astratta in C#

Crea una classe astratta in C#

Vediamo la classe astratta in C# con esempi in tempo reale su come possiamo modificare il nostro codice per includere una classe astratta C#. Tieni presente che non eseguiremo il codice perché non c'è nulla che possa essere eseguito utilizzando una classe di astrazione C#.

Passo 1) Come primo passo, creiamo una classe astratta. La classe si chiamerà Tutorial e avrà un solo metodo. Tutto il codice deve essere scritto nel file Program.cs.

Crea una classe astratta in C#

Spiegazione del codice: -

  1. Per prima cosa definiamo la classe astratta. Nota l'uso della parola chiave abstract. Questo è usato per denotare che la classe è una classe astratta.
  2. Successivamente, stiamo definendo il nostro metodo che non fa nulla. Il metodo deve avere la parola chiave denominata virtual. Ciò significa che il metodo non può essere modificato dalla classe figlia. Questo è un requisito fondamentale per qualsiasi classe astratta.

Passo 2) Ora aggiungiamo la nostra classe figlia. Questo codice viene aggiunto al file Program.cs.

Crea una classe astratta in C#

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

Non c'è nulla di eccezionale in questo codice. Definiamo semplicemente una classe chiamata "Guru99Tutorial" che eredita la classe astratta Tutorial. Definiamo quindi gli stessi metodi che abbiamo utilizzato in precedenza.

Nota:
Qui non possiamo cambiare la definizione del metodo Set che è stata definita nella classe Tutorial. Nella classe Tutorial, avevamo definito un metodo chiamato 'Set' (public virtual void Set()). Poiché il metodo faceva parte della classe astratta C#, non è consentito definire nuovamente il metodo Set nella classe Guru99Tutorial.

Sommario

Una classe astratta in Do diesis è un modello per altre classi, contrassegnato con abstract parola chiave. Non può essere istanziato direttamente e può includere metodi astratti che le classi derivate devono implementare. Le classi astratte impongono una struttura coerente tra le sottoclassi, consentendo al contempo funzionalità specifiche. Questo concetto è comunemente utilizzato per definire comportamenti di base e garantire flessibilità del codice tramite ereditarietà.