abstract
Le modificateur abstract indique que l'élément en cours de modification a une implémentation manquante ou incomplète.
Le modificateur abstract peut être utilisé avec des classes, des méthodes, des propriétés, des indexeurs et des événements.
Dans une déclaration de classe, utilisez le modificateur abstract pour indiquer qu'une classe doit uniquement servir de classe de base pour d'autres classes.
Les membres définis comme abstraits, ou inclus dans une classe abstraite, doivent être implémentés par des classes dérivées de la classe abstraite.
Exemple
Dans cet exemple, la classe Square doit fournir une implémentation de Area, car elle dérive de la classe ShapesClass :
--------
Les classes abstraites présentent les caractéristiques suivantes :
- Une classe abstraite ne peut pas être instanciée.
- Une classe abstraite peut contenir des méthodes et accesseurs abstraits.
-
Il n'est pas possible de modifier une classe abstraite à l'aide du modificateur sealed, car les deux modificateurs ont des significations opposées.
Le modificateur sealed empêche qu'une classe soit héritée et le modificateur abstract exige qu'une classe soit héritée.
-
Une classe non abstraite dérivée d'une classe abstraite doit inclure des implémentations réelles de tous les accesseurs et méthodes abstraits hérités.
Dans une déclaration de méthode ou de propriété, utilisez le modificateur abstract pour indiquer que la méthode ou la propriété ne contient pas d'implémentation.
Les méthodes abstraites présentent les caractéristiques suivantes :
Une méthode abstraite est implicitement une méthode virtuelle.
Les déclarations de méthodes abstraites sont autorisées uniquement dans les classes abstraites.
Comme une déclaration de méthode abstraite ne fournit pas d'implémentation réelle, il n'y a pas de corps de méthode ; la déclaration de méthode se termine simplement
par un point-virgule, et la signature n'est pas suivie d'accolades ({ }). Par exemple :
-------
L'implémentation est fournie par une méthode override, qui est membre d'une classe non abstraite.
L'utilisation des modificateurs static ou virtual dans une déclaration de méthode abstraite serait une erreur.
Les propriétés abstraites se comportent comme les méthodes abstraites, à l'exception des différences dans la syntaxe de déclaration et d'appel.
L'utilisation du modificateur abstract sur une propriété statique serait une erreur.
Une propriété abstraite héritée peut être substituée dans une classe dérivée en incluant une déclaration de propriété qui utilise le modificateur override.
Pour plus d'informations sur les classes abstraites, consultez Classes abstract et sealed et membres de classe.
Une classe abstraite doit fournir une implémentation pour tous les membres d'interface.
Une classe abstraite qui implémente une interface peut mapper les méthodes d'interface à des méthodes abstraites. Par exemple :
----------
Exemple
Dans cet exemple, la classe DerivedClass est dérivée de la classe abstraite BaseClass. La classe abstraite contient une méthode abstraite, AbstractMethod, et deux propriétés abstraites, X et Y.
-------
Dans l'exemple précédent, si vous tentez d'instancier la classe abstraite en utilisant une instruction comme celle-ci :
-------
Vous obtenez une erreur indiquant que le compilateur ne peut pas créer une instance de la classe abstraite BaseClass.