Class, instruction (Visual Basic)

Déclare le nom d’une classe et introduit la définition des variables, propriétés, événements et procédures que la classe comprend.

Syntaxe

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _  
Class name [ ( Of typelist ) ]  
    [ Inherits classname ]  
    [ Implements interfacenames ]  
    [ statements ]  
End Class  

Éléments

Terme Définition
attributelist Optionnel. Consultez la Liste des attributs.
accessmodifier Optionnel. Il peut s'agir d'une des méthodes suivantes :

- Public
- Protected
- Friend
- Privé
- Ami protégé
- Private Protected

Consultez Access levels in Visual Basic.
Shadows Optionnel. Consultez Shadows.
MustInherit Optionnel. Consultez MustInherit.
NotInheritable Optionnel. Consultez NotInheritable.
Partial Optionnel. Indique une définition partielle de la classe. Consultez Partiel.
name Obligatoire. Nom de cette classe. Consultez Declared Element Names.
Of Optionnel. Spécifie qu’il s’agit d’une classe générique.
typelist Obligatoire si vous utilisez le mot clé Of. Liste des paramètres de type pour cette classe. Consultez la liste de types.
Inherits Optionnel. Indique que cette classe hérite des membres d’une autre classe. Consultez Instruction Inherits.
classname Obligatoire si vous utilisez l’instruction Inherits. Nom de la classe dont cette classe dérive.
Implements Optionnel. Indique que cette classe implémente les membres d’une ou plusieurs interfaces. Consultez Instruction Implements.
interfacenames Obligatoire si vous utilisez l’instruction Implements. Noms des interfaces que ce type implémente.
statements Optionnel. Instructions qui définissent les membres de cette classe.
End Class Obligatoire. Met fin à la définition Class.

Notes

Une instruction Class définit un nouveau type de données. Une classe est un bloc de construction fondamental de la programmation orientée objet (POO). Pour plus d’informations, consultez Objets et classes.

Vous pouvez utiliser Class uniquement au niveau de l’espace de noms ou du module. Cela signifie que le contexte de déclaration pour une classe doit être un fichier source, un espace de noms, une classe, une structure, un module ou une interface, et ne peut pas être une procédure ou un bloc. Pour plus d’informations, consultez Contextes de déclaration et niveaux d’accès par défaut.

Chaque instance d’une classe a une durée de vie indépendante de toutes les autres instances. Cette durée de vie commence lorsqu’elle est créée par une clause New Operator ou par une fonction telle que CreateObject. Elle se termine lorsque toutes les variables pointant vers l’instance ont été définies sur Nothing ou sur des instances d’autres classes.

Par défaut, les classes sont définies sur l’accès Ami. Vous pouvez ajuster leurs niveaux d’accès avec les modificateurs d’accès. Pour plus d’informations, consultez Niveaux d’accès en Visual Basic.

Règles

  • Imbrication. Vous pouvez définir une classe dans une autre. La classe externe est appelée classe contenante et la classe interne est appelée classe imbriquée.

  • Héritage. Si la classe utilise l’instruction Inherits, vous ne pouvez spécifier qu’une seule classe ou interface de base. Une classe ne peut pas hériter de plusieurs éléments.

    Une classe ne peut pas hériter d’une autre classe avec un niveau d’accès plus restrictif. Par exemple, une classe Public ne peut pas hériter d’une classe Friend.

    Une classe ne peut pas hériter d’une classe imbriquée dans celle-ci.

  • Implémentation : Si la classe utilise l’instruction Implements, vous devez implémenter chaque membre défini par chaque interface que vous spécifiez dans interfacenames. Une exception à cette règle est la réimplémentation d’un membre de classe de base. Pour plus d’informations, consultez « Réimplémentation » dans Implements.

  • Propriété par défaut. Une classe peut spécifier une seule propriété au maximum comme propriété par défaut. Pour plus d’informations, consultez Par défaut.

Comportement

  • Niveau d’accès. Dans une classe, vous pouvez déclarer chaque membre avec son propre niveau d’accès. Les membres de la classe ont par défaut l’accès Public, à l’exception des variables et des constantes, qui ont par défaut l’accès Privé. Lorsqu’une classe a plus d’accès restreint qu’un de ses membres, le niveau d’accès à la classe est prioritaire.

  • Portée. Une classe est dans l’étendue de son espace de noms, de sa classe, de sa structure ou de son module contenant.

    L’étendue de chaque membre de classe est la classe entière.

    Durée de vie. Visual Basic ne prend pas en charge les classes statiques. L’équivalent fonctionnel d’une classe statique est fourni par un module. Pour plus d’informations, consultez Instruction Module.

    Les membres de classe ont des durées de vie qui dépendent de la façon et de l’emplacement où ils sont déclarés. Pour plus d’informations, consultez Durée de vie en Visual Basic.

  • Qualification. Le code en dehors d’une classe doit qualifier le nom d’un membre avec le nom de cette classe.

    Si le code à l’intérieur d’une classe imbriquée fait une référence non qualifiée à un élément de programmation, Visual Basic recherche d’abord l’élément dans la classe imbriquée, puis dans sa classe contenante, et ainsi de suite vers l’élément le plus externe contenant.

Classes et modules

Ces éléments ont de nombreuses similitudes, mais il existe également des différences importantes.

  • Terminologie. Les versions précédentes de Visual Basic reconnaissent deux types de modules : modules de classe (fichiers .cls) et modules standard (fichiers.bas). La version actuelle appelle ces classes et modules, respectivement.

  • Membres partagés. Vous pouvez contrôler si un membre d’une classe est un membre partagé ou un membre d’instance.

  • Orientation de l’objet. Les classes sont orientées objet, mais les modules ne le sont pas. Vous pouvez créer une ou plusieurs instances d’une classe. Pour plus d’informations, consultez Objets et classes.

Exemple

L’exemple suivant utilise une instruction Class pour définir une classe et plusieurs membres.

Class BankAccount
    Shared interestRate As Decimal
    Private accountBalance As Decimal
    Public holdOnAccount As Boolean = False

    Public ReadOnly Property Balance() As Decimal
        Get
            Return accountBalance
        End Get
    End Property

    Public Sub PostInterest()
        accountBalance = accountBalance * (1 + interestRate)
    End Sub

    Public Sub PostDeposit(ByVal amountIn As Decimal)
        accountBalance = accountBalance + amountIn
    End Sub

    Public Sub PostWithdrawal(ByVal amountOut As Decimal)
        accountBalance = accountBalance - amountOut
    End Sub
End Class

Voir aussi