Héritage pour les utilisateurs de Visual Basic 6.0
Mise à jour : novembre 2007
L'héritage vous permet de créer de nouvelles classes à partir de classes existantes. L'héritage peut simplifier le design de l'application en fournissant une structure de relation entre les différentes classes. Il prend également en charge la réutilisation de code, le comportement des classes nouvelles ou différentes devant être codé.
Héritage de l'interface
Visual Basic 6.0
Visual Basic 6.0 prend en charge l'héritage de l'interface, traité avec plus de détail dans Modifications de l'interface pour les utilisateurs de Visual Basic 6.0.
Visual Basic 2008
Visual Basic 2008 prend en charge l'héritage d'interfaces avec Interface, instruction (Visual Basic) et Implements, instruction. Pour plus d'informations sur les interfaces, consultez Interfaces en Visual Basic.
Héritage d'implémentation
Lorsqu'une nouvelle classe est créée via l'héritage d'implémentation, la classe nouvelle bénéficie automatiquement de tous les membres et de l'implémentation de la classe de base. La classe existante est appelée "classe de base". La nouvelle classe est la "classe dérivée". Des membres supplémentaires peuvent être ajoutés à la classe. Le comportement de la classe de base peut être modifié en écrivant du code dans la nouvelle classe. Cette technique est appelée substitution.
Vous pouvez créer des classes en héritant des classes que vous créez, des classes figurant dans les références que vous ajoutez à votre projet ou des objets dans .NET Framework. De nombreuses classes de .NET Framework sont liées par héritage. Par exemple, la classe TextBox hérite de la classe System.Windows.Forms.TextBoxBase.
Visual Basic 6.0
Visual Basic 6.0 ne prend pas en charge l'héritage d'implémentation.
Visual Basic 2008
Dans, Visual Basic 2008 l'héritage est déclaré par l'instruction Inherits. Dans cet exemple, la classe dérivée Oak hérite d'une classe de base Tree.
Public Class Oak
Inherits Tree
' Add code here to extend or
' modify the behavior of the Tree class.
End Class
MustInherit et NotInheritable
Visual Basic 6.0
Dans l'héritage de l'interface dans Visual Basic 6.0, toute classe peut agir comme une classe de base avec interface. Il n'existe aucune syntaxe permettant d'empêcher toute classe d'agir comme une classe de base avec interface. De même, il n'existe aucune syntaxe permettant d'exiger qu'une classe agisse uniquement comme une classe de base avec interface.
Visual Basic 2008
Avec l'héritage d'implémentation, Visual Basic 2008 définit deux modificateurs de classe, MustInherit et NotInheritable. Ces modificateurs laissent le programmeur contrôler les relations d'héritage dans une application.
Le modificateur MustInherit sur une déclaration de classe indique une classe qui ne peut pas être instanciée :
Public MustInherit Class BaseClass
End Class
Cela signifie que BaseClass ne peut pas apparaître après le mot clé New. Seules classes qui héritent de BaseClass et n'ont pas non plus de modificateur MustInherit peuvent être instanciées. Dans la littérature orientée objet et dans d'autres langages orientés objet, une classe MustInherit est appelée classe abstraite. Une classe qui n'est pas une classe MustInherit, c'est-à-dire une classe qui peut être instanciée, est appelée classe concrète.
Un concept lié est la classe sealed, c'est-à-dire une classe qui ne peut pas servir de classe de base. Le mot clé NotInheritable sur une définition de classe indique l'état suivant :
Public NotInheritable Class DerivedClass
End Class
Une classe NotInheritable marque le bord d'une hiérarchie d'héritage.
Pour plus d'informations, consultez Héritage en Visual Basic.
Suggestions de mise à niveau
Les classes jouant le rôle d'interfaces dans Visual Basic 6.0 sont mises à niveau en interfaces dans Visual Basic 2008. Considérez l'exemple de classe de base et de classe dérivée à partir de Visual Basic 6.0 suivant :
' Contents of class BaseClass
Public Sub BaseMethod()
End Sub
' Contents of class DerivedClass
Implements BaseClass
Private Sub BaseClass_BaseMethod()
End Sub
L'Assistant Mise à niveau produit le code mis à niveau suivant :
Option Strict Off
Option Explicit On
Interface _BaseClass
Sub BaseMethod()
End Interface
Friend Class BaseClass
Implements _BaseClass
Public Sub BaseMethod() Implements _BaseClass.BaseMethod
End Sub
End Class
Friend Class DerivedClass
Implements _BaseClass
Private Sub BaseClass_BaseMethod() Implements _BaseClass.BaseMethod
End Sub
End Class
À l'aide de l'héritage plutôt que des interfaces, le code mis à niveau peut être modifié comme suit :
Friend Class BaseClass
Public Sub BaseMethod()
' Add code here to define BaseMethod.
End Sub
End Class
Friend Class DerivedClass
Inherits BaseClass
End Class
Cela élimine un niveau d'indirection, _BaseClass. De plus, cela élimine une définition de méthode, BaseClass_BaseMethod, la méthode étant héritée de la classe de base et ne devant pas être à nouveau codée. Si le programmeur souhaitait un comportement différent pour la classe dérivée, BaseMethod peut être substituée comme indiqué :
Friend Class BaseClass
Public Overridable Sub BaseMethod()
' Add code here to define BaseMethod.
End Sub
End Class
Friend Class DerivedClass
Inherits BaseClass
Public Overrides Sub BaseMethod()
' Add code here to define behavior for DerivedClass.
End Sub
End Class
Certaines des techniques à considérer dans les interfaces mises à niveau incluent :
Le remplacement des instructions Interface par des instructions Inherits.
L'implémentation de la classe de base comme une interface plutôt que comme une classe qui implémente une interface. Pour plus d'informations, consultez Modifications de l'interface pour les utilisateurs de Visual Basic 6.0.
L'implémentation des classes de base comme des classes MustInherit.
L'implémentation des classes dérivées comme NotInheritable.