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 classeFriend
.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