Substitution de méthode en C # - Présentation - Étapes - Utilisation de la priorité

Table des matières:

Anonim

Introduction sur la substitution de méthode en C #

Surpasser en termes simples signifie, la possibilité de modifier le comportement des méthodes. Nous connaissons tous la fonction virtuelle en C ++, dans laquelle nous invoquons la fonction à partir de la classe de base dans la classe dérivée. La substitution de méthode en C # fournit un privilège similaire à la fonction virtuelle en C ++. Pour prendre un exemple des oiseaux, tous les oiseaux auront le même attribut que mouche, couleur, etc. Mais différents oiseaux auront une façon différente de voler et la couleur variera d'un oiseau à l'autre. Nous pouvons donc remplacer les méthodes de classe de base Bird dans des classes dérivées comme un perroquet, un moineau, un corbeau, etc.

Comment utiliser la substitution en C #?

Supposons que notre application ait la nécessité de changer le comportement de la méthode de classe de base dans une classe dérivée, alors nous devrions opter pour la substitution de méthode. Pour ce faire, nous devons créer la méthode dans la classe dérivée avec la même signature dans la classe de base pour effectuer une tâche différente. Avant d'apprendre à utiliser la technique prioritaire, nous devons garder à l'esprit les points ci-dessous.

  • Dans la programmation C #, la substitution de méthode est également appelée polymorphisme d'exécution, liaison tardive ou polymorphisme dynamique.
  • Ce n'est que dans les classes dérivées que la substitution de méthode est possible. Parce qu'une méthode est remplacée dans la classe dérivée de la classe de base.
  • La méthode doit être une méthode non virtuelle ou statique pour un remplacement.
  • Le modificateur de niveau d'accès de la méthode de remplacement et de la méthode virtuelle doit être le même.

La méthode qui est remplacée par la déclaration de substitution est appelée la méthode de base substituée. Ce sera présent dans la classe de base. La méthode de base substituée peut être abstraite, prioritaire ou virtuelle. Une nouvelle implémentation appelée, la méthode override est héritée de cette classe de base.

Nous utilisons différents mots clés pour remplacer la méthode. Elles sont,

1) Mot-clé virtuel

Si le compilateur rencontre le mot clé virtuel dans le programme, il comprend que cette méthode peut être remplacée par n'importe laquelle de ses classes dérivées. La structure est comme ci-dessous.

public virtual int EnemyHealth()
(
Console.WriteLine("Enemy Health");
)

2) Remplacer le mot-clé

Ceci est présent dans la classe dérivée. Il indique au compilateur que cette méthode remplace la méthode avec le même nom et la même signature dans la classe de base.

public override int EnemyHealth ()
(
Console.WriteLine("Enemy 1");
)

Exemple

Tout d'abord, examinons l'exemple sans utiliser le mot clé Virtual and override.

Code:

class Birds
(
public void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
class Parrot:Birds
(
public void Color( )
(
Console.WriteLine("Parrot is Green");
)
)
class ExecutionClass
(
public static void Main( )
(
Birds object;
object = new Birds( );
object .Color( );
object = new Parrot( );
object.Color( );
)
)

Production:

Dans l'exemple ci-dessus, nous avons créé un objet de classe dérivée Parrotand stockant sa référence dans l'objet variable de référence de type Birds.

Dans l'étape suivante, en utilisant l'objet variable de référence, nous invoquons la fonction Color (). Puisque objet contient une référence à un objet de type Parrot, il est naturel que nous nous attendions à ce que la fonction Color () de la classe Parrot soit exécutée. Mais nous nous trompons. La beauté de la programmation ne permettra pas que cela se produise.

À notre grande surprise, ce qui est exécuté est la méthode Color () de la classe Birds. En effet, la fonction est invoquée en fonction du type de référence et non de la référence à l'objet variable de référence. Étant donné que l'objet est une référence de type Birds, la fonction Color () de la classe Birds sera invoquée, quel que soit l'objet auquel il se réfère.

Maintenant, réécrivons le même programme avec virtual et override Cette fois, nous irons pas à pas pour une meilleure compréhension.

Créez une classe de base avec n'importe quel nom. Ici, j'utilise des oiseaux. Écrivez une méthode avec le mot-clé virtuel. Ce sera notre méthode redéfinie que nous remplacerons dans la classe héritée. Dans la méthode, écrivez un message à imprimer dans la console.

class Birds
(
public virtual void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)

Créez maintenant une autre classe Parrot Cette fois, nous allons l'hériter de la classe de base que nous avons créée plus tôt, c'est-à-dire les oiseaux. Pour hériter, nous utilisons le symbole «:».

classe Perroquet: Oiseaux

Ici, écrivez une fonction avec le mot-clé override et écrivez un message. Assurez-vous que le nom et la signature de la méthode dans la classe dérivée correspondent au nom et à la signature de la méthode dans la classe de base.

public override void Color ( )
(
Console.WriteLine("Parrot is Green");
)

Nous avons besoin d'une classe de plus pour exécuter la fonctionnalité de vérification de la priorité. Créez une classe avec n'importe quel nom. À l'intérieur, écrivez la fonction Main.

class ExecutionClass
(
public static void Main( )
(
)
)

Créez un objet de la classe parent et déclenchez la fonction à l'aide de l'objet de la classe. Cela invoquera la méthode Color présente dans la classe Birds.

Birds object;
object = new Birds( );
object .Color( );

Créez maintenant l'objet de la classe dérivée et appelez la méthode Color. Cela invoquera la méthode Color de la classe Parrot.

object = new Parrot( );
object.Color( );

Pouvez-vous deviner la sortie lorsque nous exécutons le programme? C'est comme indiqué ci-dessous.

Production:

Les mots-clés override et virtual permettent d'invoquer la classe de base et les méthodes de classe dérivée séparément à tout moment, même si les noms et les signatures des méthodes sont les mêmes.

Conclusion

Dans cet article, nous avons compris le remplacement de méthode, le besoin de remplacement de méthode, un exemple concret du principe de remplacement, la façon de le réaliser, la nécessité d'utiliser les mots clés virtuels et de remplacement et l'exemple de remplacement à l'aide du code. Nous pouvons conclure que le dépassement est l'une des caractéristiques utiles du polymorphisme que nous pouvons changer le comportement de la méthode de classe de base dans la classe dérivée.

Articles recommandés

Ceci est un guide de remplacement de méthode en C #. Ici, nous discutons de l'introduction, comment utiliser les mots clés de substitution et différents pour la substitution de méthode ainsi que des exemples et des étapes. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Fonctions C #
  2. Commandes C #
  3. Qu'est-ce que le multithreading en C #?
  4. Fonctions de chaîne C #
  5. Guide de remplacement en C ++
  6. Surcharge en Java
  7. Multithreading en C # avec des méthodes