Tutoriel de classe abstraite C# avec exemple : Qu'est-ce que l'abstraction ?

Qu'est-ce qu'une classe abstraite en C# ?

Classe abstraite ne peut jamais être instancié et est marqué par le mot clé abstract. Une classe abstraite contient zéro ou plusieurs méthodes abstraites. La classe abstraite agit comme une classe de base et est conçue pour être héritée par les sous-classes qui implémentent ou remplacent sa méthode.

Apprenons la classe abstraite en C# avec l'exemple donné ci-dessous. Vous trouverez ci-dessous la définition d'une classe appelée « Animal ». Lorsque la classe « Animal » est définie, on ne sait rien de l'animal, qu'il s'agisse d'un chien ou d'un chat. La méthode appelée description n'est qu'une méthode générique définie pour la classe.

Classe abstraite en C#

Maintenant que l'on sait ce que sera exactement l'Animal, nous créons une autre classe qui hérite de la classe de base. Si nous savons que l'animal est en fait un Chien, nous créons la classe Dog qui hérite de la classe de base principale. La principale différence ici est que la classe Dog ne peut pas modifier la définition du Descriptméthode ionique de la classe Animal. Il doit définir sa propre méthode abstraite C# appelée Dog-Description. C'est le concept de base des classes abstraites C#.

Classe abstraite en C#

Créer une classe abstraite en C#

Voyons la classe abstraite en C# avec des exemples en temps réel sur la façon dont nous pouvons modifier notre code pour inclure une classe abstraite C#. Notez que nous n’exécuterons pas le code, car rien ne peut être exécuté à l’aide d’une classe d’abstraction C#.

Étape 1) Dans un premier temps, créons une classe abstraite. La classe s’appellera Tutorial et n’aura qu’une seule méthode. Tout le code doit être écrit dans le fichier Program.cs.

Créer une classe abstraite en C#

Explication du code : -

  1. Nous définissons d'abord la classe abstraite. Notez l'utilisation du mot-clé abstract. Ceci est utilisé pour indiquer que la classe est une classe abstraite.
  2. Ensuite, nous définissons notre méthode qui ne fait rien. La méthode doit avoir le mot-clé appelé virtual. Cela signifie que la méthode ne peut pas être modifiée par la classe enfant. Il s’agit d’une exigence de base pour toute classe abstraite.

Étape 2) Ajoutons maintenant notre classe enfant. Ce code est ajouté au fichier Program.cs.

Créer une classe abstraite en 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(); 
  }
 }
}

Il n’y a rien d’exceptionnel dans ce code. Nous définissons simplement une classe appelée 'Guru99Tutorial' qui hérite de la classe abstraite Tutorial. Nous définissons ensuite les mêmes méthodes que celles utilisées auparavant.

Attention:
Ici, nous ne pouvons pas changer la définition de la méthode Set qui a été définie dans la classe Tutorial. Dans la classe Tutorial, nous avions défini une méthode appelée 'Set' (public virtual void Set()). Puisque la méthode faisait partie de la classe abstraite C#, nous ne sommes pas autorisés à définir à nouveau la méthode Set dans la classe Guru99Tutorial.

Résumé

Un cours abstrait en Do dièse est un modèle pour d'autres classes, marqué avec le abstract Mot-clé. Il ne peut pas être instancié directement et peut inclure des méthodes abstraites que les classes dérivées doivent implémenter. Les classes abstraites imposent une structure cohérente entre les sous-classes tout en autorisant des fonctionnalités spécifiques. Ce concept est couramment utilisé pour définir les comportements de base et assurer la flexibilité du code grâce à l'héritage.