Génération d'une classe à partir d'une classe existante : utilisation de l'héritage

Mise à jour : novembre 2007

Dans cette leçon, vous apprendrez comment utiliser l'héritage pour créer une classe qui repose sur une classe existante.

De nombreux projets réels ont en commun différents attributs et comportements. Ainsi, toutes les voitures sont dotées de roues et d'un moteur et peuvent rouler et s'arrêter. Toutefois, certaines voitures ont des attributs qui sont propres à elles seules. Par exemple, un cabriolet a une partie supérieure amovible qui peut être repliée électroniquement ou à la main.

Si vous avez créé un objet pour représenter une voiture, vous avez intérêt à y intégrer des propriétés et des méthodes destinées à tous les attributs et comportements communs, et non à ajouter des attributs tels qu'un décapotage, sachant que cet attribut ne s'applique pas à toutes les voitures.

L'héritage, vous permet de créer une classe "cabriolet" dérivée de la classe voiture. Cette classe hérite de tous les attributs de la classe voiture, et permet d'ajouter les attributs et comportements uniques et propres à un cabriolet.

Héritage d'une classe existante

L'instruction Inherits permet de déclarer une nouvelle classe, appelée une classe dérivée, basée sur une classe existante, appelée une classe de base. Les classes dérivées héritent de tous les événements, propriétés, méthodes, champs et constantes définis dans la classe de base. Le code suivant illustre la déclaration pour une classe dérivée.

Class DerivedClass
    Inherits BaseClass
End Class

La nouvelle classe, DerivedClass, peut alors être instanciée, ses propriétés et méthodes sont accessibles tout comme BaseClass, et vous pouvez ajouter de nouvelles propriétés et méthodes spécifiques à la nouvelle classe. Pour obtenir un exemple, reportez-vous à la classe Persons que vous avez créée dans les leçons précédentes.

Supposez que vous souhaitiez créer une classe qui représente des joueurs de base-ball ; ceux-ci disposent de tous des attributs définis dans la classe Persons, mais également d'attributs uniques, tels que leurs numéros et leurs positions. Plutôt que d'ajouter ces propriétés à la classe Persons, vous créez une nouvelle classe dérivée qui hérite de la classe Persons, puis ajoutez les nouvelles propriétés à cette classe.

Essayez !

Pour créer une classe dérivée

  1. Ouvrez le projet Persons que vous avez créé dans la leçon précédente. Si vous ne l'aviez pas enregistré, revenez à Test d'une classe et effectuez les procédures.

  2. Dans l'Explorateur de solutions, sélectionnez le nœud du projet Persons.

  3. Dans le menu Projet, cliquez sur Ajouter une classe.

  4. Dans la boîte de dialogue Ajouter un nouvel élément, tapez Players dans la zone Nom, puis cliquez sur Ajouter.

    Un nouveau module de classe est ajouté au projet.

  5. Dans l'éditeur de code, ajoutez le code suivant juste sous la ligne Public Class Players.

    Inherits Persons
    
  6. Ajoutez le code suivant pour définir deux nouvelles propriétés.

    Private numberValue As Integer
    Private positionValue As String
    Public Property Number() As Integer
        Get
            Number = numberValue
        End Get
        Set(ByVal value As Integer)
            numberValue = value
        End Set
    End Property
    Public Property Position() As String
        Get
            Position = positionValue
        End Get
        Set(ByVal value As String)
            positionValue = value
        End Set
    End Property
    
  7. Dans le menu Fichier, cliquez sur Enregistrer tout.

Test de la classe Players

Vous avez maintenant créé une classe Players dérivée de la classe Persons. Dans la procédure suivante, vous créerez un nouveau programme pour tester la classe Players.

Pour créer un projet de test pour votre classe

  1. Dans le menu Fichier, pointez sur Ajouter, puis cliquez sur Nouveau projet.

  2. Dans la boîte de dialogue Ajouter un nouveau projet, dans le volet Modèles, cliquez sur Application Windows.

  3. Dans la zone Nom, tapez PlayerTest, puis cliquez sur OK.

  4. Un nouveau projet Windows Forms est ajouté à l'Explorateur de solutions et un nouveau formulaire s'affiche.

  5. Dans l'Explorateur de solutions, sélectionnez le projet PlayerTest, puis cliquez sur Définir comme projet de démarrage dans le menu Projet.

  6. Dans l'Explorateur de solutions, sélectionnez le projet PlayerTest, puis cliquez sur Ajouter une référence dans le menu Projet.

    La boîte de dialogue Ajouter une référence s'ouvre.

  7. Cliquez sur l'onglet Projets, choisissez Persons, puis cliquez sur OK.

  8. Double-cliquez sur le formulaire pour ouvrir l'éditeur de code, puis entrez la déclaration suivante sous la ligne Public Class Form1.

    Dim player1 As New Persons.Players
    Dim player2 As New Persons.Players
    
  9. Deux nouvelles instances de la classe Players sont déclarées.

  10. Dans le menu Fichier, cliquez sur Enregistrer tout.

Pour tester la classe dérivée

  1. Dans l'Explorateur de solutions, sélectionnez Form1 dans le projet PlayerTest, puis cliquez sur Code dans le menu Affichage.

  2. Dans l'éditeur de code, ajoutez le code suivant à la procédure de l'événement Form1_Load.

    With player1
        .FirstName = "Andrew"
        .LastName = "Cencini"
        .Number = 43
        .Position = "Shortstop"
    End With
    With player2
        .FirstName = "Robert"
        .LastName = "Lyon"
        .Number = 11
        .Position = "Catcher"
    End With
    
  3. Dans l'Explorateur de solutions, sélectionnez Form1 dans le projet PlayerTest, puis cliquez sur Concepteur dans le menu Affichage.

  4. À partir de la Boîte à outils, faites glisser deux contrôles Button jusqu'au formulaire.

  5. Sélectionnez le premier contrôle Button, puis affectez la valeur At Bat à sa propriété Text dans la fenêtre Propriétés.

  6. Sélectionnez le deuxième contrôle Button, puis affectez la valeur On Deck à sa propriété Text dans la fenêtre Propriétés.

  7. Double-cliquez sur le premier bouton (At Bat) pour ouvrir l'éditeur de code, puis dans le gestionnaire d'événements Button1_Click, ajoutez le code suivant.

    MsgBox(player1.Position & " " & player1.FullName & ", #" & _
      CStr(player1.Number) & " is now at bat.")
    

    Remarquez que vous utilisez la méthode FullName qui a été héritée de la classe de base Persons.

  8. Dans le gestionnaire d'événements Button2_Click, ajoutez le code suivant.

    MsgBox(player2.Position & " " & player2.FullName & ", #" & _
      CStr(player2.Number) & " is on deck.")
    
  9. Appuyez sur F5 pour exécuter le programme. Cliquez sur chaque bouton pour examiner les résultats.

  10. Dans le menu Fichier, sélectionnez Enregistrer tout.

Étapes suivantes

Dans cette leçon, vous avez appris comment hériter d'une classe existante et comment étendre la classe dérivée. Vous en savoir plus sur l'héritage, consultez Présentation détaillée : substitution de membres, ou passez à la leçon suivante pour apprendre ce que sont les collections.

Leçon suivante : Utilisation de collections pour gérer plusieurs objets

Voir aussi

Concepts

Éléments fondamentaux de l'héritage