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 commentaire

Envoyer un commentaire

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

Vous pourriez être intéressé par...

Web

Les coulisses d’un projet de développement web

Quand on visite un site web terminé, on ne voit que le résultat final : des pages propres, des animations fluides, un contenu bien organisé. Mais derrière cette façade se cache un processus de création bien plus complexe, fait de réflexion stratégique, de décisions...

Image pour un blog

Quels sont les outils indispensables pour un développeur web ?

Le métier de développeur web évolue constamment, et avec lui, les outils nécessaires pour travailler efficacement. Entre les éditeurs de code, les frameworks, les outils de débogage et les plateformes de déploiement, le choix peut paraître écrasant pour les débutants...

HTML5 et Game Developement

Recréer Snake en HTML et JavaScript vanille

Parfois, les meilleurs projets naissent sans prétention particulière, juste pour le plaisir de coder et de se replonger dans les classiques du jeu vidéo. C'est exactement l'esprit qui a présidé à la création de cette version rétro de Snake, entièrement réalisée en...

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.