Les classes abstraites en C# : définition, syntaxe et exemples d’implémentation

4 décembre 2017

Cours C# (C-sharp)

Une classe abstraite est un type spécial de classe qui ne peut pas être instanciée avec le mot-clé « new« . En fait, pour être utilisée, elle doit être héritée. Voyons immédiatement un exemple de classe abstraite, à partir de laquelle nous introduirons une série de concepts importants :

public abstract class Image
{
  protected string mNom;
  protected int mNumCotes;

  public Figure(string Nom, int NumCotes)
  {
    mNom = Nom;
    mNumCotes = NumCotes;
  }

  public string Nom
  {
    get { return mNom; }
  }

  public int NumCotes {
    get { return mNumCotes; }
  }

  public abstract double Perimetre { get; }
  public abstract double Area { get; }
  public abstract void Dessine();
}

 

Une classe abstraite se déclare avec le mot clé « abstract« . Dans cette classe peuvent être définies des variables, des méthodes et des propriétés, tout comme nous l’avons fait jusqu’à présent (dans l’exemple ci-dessus, les variables mNom et mNumCotes, le constructeur, et les propriétés Nom et NumCotes).

Au-delà de cela, il est possible de déclarer un autre ensemble de méthodes et de propriétés qui doivent être implémentées par les classes qui en héritent : les méthodes et propriétés dites abstraites.

Dans notre cas, la classe qui hérite de Figure doit fournir une implémentation des propriétés Perimetre et Area (à partir de la définition, nous comprenons qu’ils seront en lecture seule, en cas de lecture/écriture on aurait eu get; set;) et la méthode Dessine.

La classe Carre hérite correctement de la classe Image :

public class Carre : Figure
{
  private double mCote;

  public Carre(int Cote) : base(“Carre”, 4)
  {
    mCote = Cote;
  }

  public override double Perimetre
  {
    get { return mCote * 4; }
  }

  public override double Area
  {
    get { return mCote * mCote; }
  }

  public override void Dessine()
  {
    //…
  }
}

 

Des caractéristiques communes

Figure est la classe qui contient les caractéristiques communes à chaque figure géométrique. La définition fournie oblige toutes les classes qui en héritent à redéfinir les méthodes et propriétés déclarées abstraites, sinon dans la phase de compilation, vous obtiendrez un message d’erreur car aucune action concrète ne correspond à la déclaration de la méthode : pas de code à exécuter.

Par exemple, en supprimant la méthode Dessine de la classe Carre, la compilation ne parvient pas à signaler que ‘Carre‘ n’implémente pas la méthode abstraite héritée de Figure.Dessine().

Pour les classes abstraites, les mêmes considérations que pour l’héritage sont valides, c’est-à-dire si une méthode requiert une classe abstraite comme argument, à sa place, toute classe qui en hérite peut être utilisée.

Dans VB.NET, une classe abstraite se déclare avec MustInherit et une méthode abstraite avec MustOverride.

 

 

 

 

Précédent : 10. Overloading                                                                                                                            Suivant : 12. Les interfaces

« 

Itamde est également une école de programmation en ligne.

Itamde

Apprenez ce que vous voulez, à votre rythme

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pourriez être intéressé par…

Restez informé des dernières actualités et mises à jour

Accédez au contenu réservé

Découvrez les coulisses de nos projets, des ressources exclusives et l’avancée de nos créations en temps réel.

Inscrivez-vous à la newsletter

Recevez nos actualités, nos réflexions créatives et les nouveautés de l’atelier directement dans votre boîte mail.

Suivez-nous

Rejoignez notre communauté sur les réseaux pour suivre nos projets au quotidien et échanger avec nous.