Partager via


MustInherit (Visual Basic)

Spécifie qu’une classe ne peut être utilisée que comme classe de base et que vous ne pouvez pas créer un objet directement à partir de celui-ci.

Remarques

L’objectif d’une classe de base (également appelée classe abstraite) est de définir des fonctionnalités communes à toutes les classes dérivées. Cela permet d’enregistrer les classes dérivées d’avoir à redéfinir les éléments communs. Dans certains cas, cette fonctionnalité courante n’est pas suffisante pour rendre un objet utilisable, et chaque classe dérivée définit les fonctionnalités manquantes. Dans ce cas, vous souhaitez que le code consommateur crée des objets uniquement à partir des classes dérivées. Vous utilisez MustInherit sur la classe de base pour appliquer cela.

Une autre utilisation d’une MustInherit classe consiste à restreindre une variable à un ensemble de classes associées. Vous pouvez définir une classe de base et en dériver toutes ces classes associées. La classe de base n’a pas besoin de fournir de fonctionnalités communes à toutes les classes dérivées, mais elle peut servir de filtre pour affecter des valeurs à des variables. Si votre code consommateur déclare une variable comme classe de base, Visual Basic vous permet d’affecter un seul objet d’une des classes dérivées à cette variable.

Le .NET Framework définit plusieurs MustInherit classes, entre elles Array, Enumet ValueType. ValueType est un exemple de classe de base qui limite une variable. Tous les types valeur dérivent de ValueType. Si vous déclarez une variable en tant que ValueType, vous pouvez affecter uniquement des types valeur à cette variable.

Règles

  • Contexte de déclaration. Vous ne pouvez utiliser MustInherit que dans une Class instruction.

  • Modificateurs combinés. Vous ne pouvez pas spécifier MustInherit ensemble avec NotInheritable la même déclaration.

Exemple :

L’exemple suivant illustre à la fois l’héritage forcé et la substitution forcée. La classe shape de base définit une variable acrossLine. Les classes circle et square dérivent de shape. Ils héritent de la définition de acrossLine, mais ils doivent définir la fonction area , car ce calcul est différent pour chaque type de forme.

Public MustInherit Class shape
    Public acrossLine As Double
    Public MustOverride Function area() As Double
End Class
Public Class circle : Inherits shape
    Public Overrides Function area() As Double
        Return Math.PI * acrossLine
    End Function
End Class
Public Class square : Inherits shape
    Public Overrides Function area() As Double
        Return acrossLine * acrossLine
    End Function
End Class
Public Class consumeShapes
    Public Sub makeShapes()
        Dim shape1, shape2 As shape
        shape1 = New circle
        shape2 = New square
    End Sub
End Class

Vous pouvez déclarer shape1 et shape2 être de type shape. Toutefois, vous ne pouvez pas créer un objet à partir duquel shape il ne dispose pas des fonctionnalités de la fonction area et est marqué MustInherit.

Étant donné qu’elles sont déclarées comme shape, les variables shape1 et shape2 sont limitées aux objets des classes circle dérivées et square. Visual Basic ne vous permet pas d’affecter d’autres objets à ces variables, ce qui vous donne un niveau élevé de sécurité de type.

Utilisation

Le MustInherit modificateur peut être utilisé dans ce contexte :

Déclaration de classe

Voir aussi