Recherche…


introduction

Le polymorphisme est l'un des concepts de base de la programmation orientée objet (Object Oriented Programming) . L'idée principale du polymorphisme est qu'un objet peut prendre différentes formes. Pour y parvenir (polymorphisme), nous avons deux approches principales.

  1. Surcharge de méthode

    • Se produit lorsqu'il existe plusieurs méthodes avec le même nom, avec des paramètres d'entrée différents. Le type de retour doit être identique pour toutes les méthodes portant le même nom
  2. Méthode à écraser

    • Se produit lorsque l'objet enfant utilise la même définition de méthode (même nom avec les mêmes paramètres), mais des implémentations différentes.

En utilisant ces deux approches, nous pouvons utiliser la même méthode / fonction pour se comporter différemment. Voyons plus de détails à ce sujet dans les exemples suivants.

Surcharge de méthode

La surcharge de méthode est la manière d'utiliser le polymorphisme dans une classe. Nous pouvons avoir deux méthodes ou plus dans la même classe, avec des paramètres d'entrée différents.

La différence des paramètres d'entrée peut être soit:

  • Nombre de paramètres
  • Type de paramètres (type de données)
  • Ordre des paramètres

Jetons un coup d'oeil à eux séparément (Ces exemples dans Java, comme je suis plus familier avec elle - Désolé à ce sujet):

  1. Nombre de paramètres

     public class Mathematics { 
         public int add (int a, int b) {
             return (a + b);
         }
    
         public int add (int a, int b, int c) {
             return (a + b + c); 
         }
    
         public int add (int a, int b, int c, int c) {
             return (a + b + c + d);
         }
     }
    

    Regardez attentivement, vous pouvez voir que le type de retour de la méthode est le même - int , mais il existe un nombre d'entrées différent pour ces méthodes. Ceci est appelé méthode de chargement avec un nombre différent de paramètres.

    PS: Ceci est juste un exemple , il n'y a pas besoin de définir des fonctions supplémentaires comme celle-ci.

  1. Type de paramètres

    public class Mathematics { 
        public void display (int a) {
            System.out.println("" + a);
        }
    
        public void display (double a) {
            System.out.println("" + a);
        }
    
        public void display (float a) {
            System.out.println("" + a);
        }
    }
    

    Notez que chaque méthode a le même nom et le même type de retour, alors qu'ils ont des types de données en entrée différents.

    PS: Cet exemple ne sert qu'à expliquer le but uniquement.

  1. Ordre des paramètres

    public class Mathematics {
        public void display (int a, double b) {
            System.out.println("Numbers are " + a + " and " + b);
        }
    
        public void display (double a, int b) {
            System.out.println("Numbers are " + a + " and " + b);
        }
    }
    

    PS: Cet exemple sert également à expliquer le but uniquement.

Dérogation de méthode

La substitution de méthode est la manière d'utiliser le polymorphisme entre les classes. Si une classe est héritée d'une autre, la première (sous-classe) peut remplacer les méthodes de cette dernière (super classe) et modifier l'implémentation.

Ceci est utilisé lorsque la super classe définit l'implémentation plus générale de la méthode alors que la sous-classe en utilise une plus spécifique.

Prenons l'exemple suivant:

Nous avons un cours pour les mammifères:

class Mammal {
  void whoIam () {
    System.out.println("I am a Mammal");
  }
}

Ensuite, nous avons un cours pour chien, qui est un mammifère:

class Dog extends Mammal {
  @Override
  void whoIam () {
    super.whoIam();
    System.out.println("I am a Dog!");
  }
}

Dans cet exemple, nous définissons la méthode whoIam() dans la classe des Mammal , où le mammifère dit que c'est un mammifère. Mais c'est un terme général, car il y a beaucoup de mammifères. Ensuite, nous pouvons hériter de la classe de Dog classe des Mammal , car le chien est un mammifère. Mais, pour être plus précis, Dog est à la fois un chien et un mammifère. Par conséquent, le chien devrait dire, I am a Mammal et aussi I am a Dog . Nous pouvons donc remplacer la méthode whoIam() dans la super classe (classe Mammal ) de la sous-classe (la classe Dog ).

Nous pouvons aussi appeler la méthode de la super classe en utilisant super.whoIam() en Java. Ensuite, le Dog se comportera comme un chien, tout en se comportant comme un mammifère.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow