Présentation détaillée : substitution de membres

Mise à jour : novembre 2007

Dans cette leçon, vous apprendrez comment substituer un membre d'une classe dérivée.

Dans la leçon précédente, vous avez appris comment hériter d'une classe de base et étendre la classe dérivée avec de nouvelles propriétés. En plus d'ajouter de nouvelles propriétés ou méthodes à une classe dérivée, vous pouvez également souhaiter modifier, ou substituer, le comportement de propriétés ou de méthodes existantes.

Par exemple, vous pouvez créer une classe Truck dérivée d'une classe Car qui possède une méthode StartEngine. Si le camion (Truck) est équipé d'un moteur diesel, le processus du démarrage du moteur (StartEngine) peut différer de celui d'une voiture (Car) ; dans ce cas, vous souhaiterez substituer la méthode StartEngine pour mieux l'adapter au camion.

Substitution de propriétés et de méthodes

Par défaut, les propriétés et les méthodes d'une classe ne peuvent pas être substituées. Pour autoriser une classe dérivée à substituer une propriété ou une méthode, elle doit être marquée en tant que substituable par une déclaration au moyen du mot clé Overridable.

Public Overridable Property EngineType As String

Public Overridable Sub StartEngine(ByVal EngineType As String)

Lors de l'héritage d'une classe de base, les propriétés et les méthodes marquées comme étant Overridable peuvent être utilisées telles quelles, ou peuvent être modifiées pour répondre à vos besoins, par une déclaration à l'aide du mot clé Overrides.

Public Overrides Property EngineType As String

Public Overrides Sub StartEngine(ByVal EngineType As String)

Dans la classe Players, créée lors de la leçon précédente, vous pouvez substituer la méthode FullName pour inclure le numéro du joueur et éliminer le code qui retourne un deuxième prénom.

Essayez !

Pour substituer la méthode FullName

  1. Ouvrez le projet Persons que vous avez créé dans la leçon précédente. Si vous ne l'avez pas enregistré, revenez à la leçon précédente, Génération d'une classe à partir d'une classe existante : utilisation de l'héritage, et terminez les procédures.

  2. Dans l'Explorateur de solutions, sélectionnez le nœud Persons.vb, puis dans le menu Affichage, sélectionnez Code.

  3. Dans l'éditeur de code, modifiez la déclaration de la méthode FullName de la manière suivante :

    Public Overridable Function FullName() As String
    
  4. Dans l'Explorateur de solutions, sélectionnez le nœud Players.vb, puis dans le menu Affichage, sélectionnez Code.

  5. Dans l'éditeur de code, ajoutez le code suivant à la classe.

    Public Overrides Function FullName() As String
        FullName = FirstName & " " & LastName & ", #" & numberValue
    End Function
    
  6. Dans l'Explorateur de solutions, sélectionnez le nœud Form1.vb dans le projet PlayerTest, puis dans le menu Affichage, sélectionnez Code.

  7. Dans l'éditeur de code, modifiez le code de l'événement Button1_Click de la manière suivante :

    MsgBox(player1.Position & " " & player1.FullName & _
          " is now at bat.")
    
  8. Modifiez le code de l'événement Button2_Click de la manière suivante :

    MsgBox(player2.Position & " " & player2.FullName & _
          " is on deck.")
    
  9. Appuyez sur F5 pour exécuter le programme et cliquez sur chaque bouton pour afficher les résultats.

    Remarquez que les résultats sont les mêmes qu'auparavant, bien que vous utilisiez désormais la méthode FullName substituée.

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

Étapes suivantes

Dans cette leçon, vous avez appris comment substituer une méthode. Dans la leçon suivante, vous apprendrez comment utiliser des collections pour gérer des groupes d'objets similaires.

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

Voir aussi

Tâches

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

Référence

Overridable

Overrides