Partager via


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.

Voir aussi

Autres ressources

Héritage en Visual Basic

Interfaces en Visual Basic