Polymorphisme dans les POO Java avec exemple :qu'est-ce que c'est, dynamique
Qu'est-ce que le polymorphisme en Java ?
Polymorphisme en Java se produit lorsqu'il existe une ou plusieurs classes ou objets liés les uns aux autres par héritage. C'est la capacité d'un objet à prendre plusieurs formes. L'héritage permet aux utilisateurs d'hériter d'attributs et de méthodes, et le polymorphisme utilise ces méthodes pour effectuer différentes tâches. Donc, l'objectif est la communication, mais l'approche est différente.
Par exemple, vous avez un smartphone pour communiquer. Le mode de communication que vous choisissez peut être n'importe quoi. Il peut s'agir d'un appel, d'un message texte, d'un message photo, d'un courrier, etc. Ainsi, l'objectif commun est la communication, mais leur approche est différente. C'est ce qu'on appelle le polymorphisme. Maintenant, nous allons apprendre le polymorphisme en Java avec un exemple.
Dans ce tutoriel Java, vous apprendrez-
- Qu'est-ce que le polymorphisme en Java ?
- Polymorphisme Java dans les POO avec exemple
- Remplacement de méthode en Java
- Différence entre surcharge et remplacement
- Qu'est-ce que le polymorphisme dynamique ?
- Différence entre le polymorphisme statique et dynamique
- Super mot-clé en Java
Cliquez ici si la vidéo n'est pas accessible
Polymorphisme Java dans les POO avec exemple
Nous avons une classe parente, "Compte" avec fonction de dépôt et de retrait. Le compte a 2 cours enfants
L'opération de dépôt et de retrait est la même pour les comptes d'épargne et de chèques. Ainsi, les méthodes héritées de la classe Account fonctionneront.
Exemple de polymorphisme Java
Modification des exigences logicielles
Il y a un changement dans la spécification des exigences, quelque chose de si courant dans l'industrie du logiciel. Vous êtes censé ajouter une fonctionnalité de compte bancaire privilégié avec facilité de découvert.
Pour un fond, le découvert est une facilité où vous pouvez retirer un montant supérieur au solde disponible de votre compte.
Alors, retirez la méthode pour les besoins privilégiés à implémenter à nouveau. Mais vous ne modifiez pas le morceau de code testé dans le compte d'épargne et de chèques. C'est l'avantage de OOPS
Étape 1) De sorte que lorsque la méthode "retirée" pour enregistrer le compte est appelée, une méthode de la classe de compte parent est exécutée
Étape 2) Mais lorsque la méthode « Retrait » pour le compte privilégié (facilité de découvert) est appelée, la méthode de retrait définie dans la classe privilégiée est exécutée. C'est le polymorphisme dans les POO.
Remplacement de méthode en Java
Le remplacement de méthode consiste à redéfinir une méthode de super classe dans une sous-classe.
Règles de remplacement de méthode
- La signature de la méthode, c'est-à-dire le nom de la méthode, la liste des paramètres et le type de retour, doivent correspondre exactement.
- La méthode surchargée peut élargir l'accessibilité mais pas la réduire, c'est-à-dire que si elle est privée dans la classe de base, la classe enfant peut la rendre publique mais pas l'inverse.
Exemple
class Doctor{ public void treatPatient(){ // treatPatient method } class Surgeon extends Doctor{ public void treatPatient(){ // treatPatient method } } Class run{ public static void main (String args[]){ Doctor doctorObj = new Doctor() // treatPatient method in class Doctor will be executed doctorObj.treatPatient(); Surgeon surgeonObj = new Surgeon(); // treatPatient method in class Surgeon will be executed surgeonObj.treatPatient(); } }
Différence entre surcharge et remplacement
Remplacement de la méthode | |
---|---|
La surcharge de méthode est dans la même classe, où plusieurs méthodes ont le même nom mais des signatures différentes. | Le remplacement de méthode se produit lorsqu'une des méthodes de la super classe est redéfinie dans la sous-classe. Dans ce cas, la signature de la méthode reste la même. |
Par exemple : void sum (int a , int b); void sum (int a , int b, int c); void sum (float a, double b); | Par exemple : class X{ public int sum(){ // some code } } class Y extends X{ public int sum(){ //overridden method //signature is same } } |
Qu'est-ce que le polymorphisme dynamique ?
Le polymorphisme dynamique dans les POO est le mécanisme par lequel plusieurs méthodes peuvent être définies avec le même nom et la même signature dans la superclasse et la sous-classe. L'appel à une méthode surchargée est résolu au moment de l'exécution.
Exemple de polymorphisme dynamique :
Une variable de référence de la super classe peut faire référence à un objet de sous classe
Doctor obj = new Surgeon();
Considérez la déclaration
obj.treatPatient();
Ici, la variable de référence "obj" est de la classe parent, mais l'objet vers lequel elle pointe est de la classe enfant (comme indiqué dans l'exemple de diagramme ci-dessous de polymorphisme).
obj.treatPatient() exécutera la méthode TreatPatient() de la sous-classe – Chirurgien
Si une référence de classe de base est utilisée pour appeler une méthode, la méthode à invoquer est décidée par la JVM, en fonction de l'objet vers lequel la référence pointe
Par exemple, même si obj est une référence à Doctor, il appelle la méthode de Surgeon, car il pointe vers un objet Surgeon
Ceci est décidé pendant l'exécution et est donc appelé dynamique ou polymorphisme d'exécution
Différence entre le polymorphisme statique et dynamique
Le polymorphisme statique en Java est un type de polymorphisme qui collecte les informations pour appeler une méthode au moment de la compilation, tandis que le polymorphisme dynamique est un type de polymorphisme qui collecte les informations pour appeler une méthode au moment de l'exécution.
Polymorphisme statique | Polymorphisme dynamique |
---|---|
Cela concerne la surcharge de méthode. | Cela concerne le remplacement de méthode. |
Les erreurs, le cas échéant, sont résolues au moment de la compilation. Comme le code n'est pas exécuté lors de la compilation, d'où le nom static. Par exemple : void sum (int a , int b); void sum (float a, double b); int sum (int a, int b); //compiler gives error. | Dans le cas où une variable de référence appelle une méthode surchargée, la méthode à invoquer est déterminée par l'objet vers lequel pointe votre variable de référence. Cela ne peut être déterminé qu'au moment de l'exécution lorsque le code est en cours d'exécution, d'où le nom dynamique. Par exemple : //reference of parent pointing to child object Doctor obj = new Surgeon(); // method of child called obj.treatPatient(); |
Super mot-clé en Java
Que se passe-t-il si la méthode treatPatient de la classe Surgeon souhaite exécuter la fonctionnalité définie dans la classe Doctor, puis exécuter sa propre fonctionnalité spécifique ?
Dans ce cas, le mot-clé super
peut être utilisé pour accéder aux méthodes de la classe parent à partir de la classe enfant.
La méthode treatPatient dans la classe Surgeon pourrait être écrite comme :
treatPatient(){ super.treatPatient(); //add code specific to Surgeon }
Le mot clé super peut être utilisé pour accéder à n'importe quel membre de données ou méthode de la super classe dans la sous-classe.
Ensuite, nous découvrirons le super mot-clé, l'héritage et le polymorphisme en Java avec des exemples de programmes.
Exemple :-Pour apprendre l'héritage, le polymorphisme et le super mot clé
Étape 1) Copiez le code suivant dans un éditeur
public class Test{ public static void main(String args[]){ X x= new X(); Y y = new Y(); y.m2(); //x.m1(); //y.m1(); //x = y;// parent pointing to object of child //x.m1() ; //y.a=10; } } class X{ private int a; int b; public void m1(){ System.out.println("This is method m1 of class X"); } } class Y extends X{ int c; // new instance variable of class Y public void m1(){ // overriden method System.out.println("This is method m1 of class Y"); } public void m2(){ super.m1(); System.out.println("This is method m2 of class Y"); } }
Étape 2) Enregistrez, compilez et exécutez le code. Observez la sortie.
Étape 3) Décommentez les lignes # 6-9. Enregistrez, compilez et exécutez le code. Observez la sortie.
Étape 4) Décommentez la ligne # 10 . Enregistrez et compilez le code.
Étape 5) Erreur = ? C'est parce que la sous-classe ne peut pas accéder aux membres privés de la super classe.
Résumé
- Le polymorphisme dans la programmation orientée objet se produit lorsqu'il existe une ou plusieurs classes ou objets liés les uns aux autres par héritage. C'est la capacité d'un objet à prendre plusieurs formes.
- Le remplacement de méthode consiste à redéfinir une méthode de super classe dans une sous-classe.
- Le polymorphisme dynamique en Java est le mécanisme par lequel plusieurs méthodes peuvent être définies avec le même nom et la même signature dans la superclasse et la sous-classe.
- Le polymorphisme statique en Java est un type de polymorphisme qui collecte les informations pour appeler une méthode au moment de la compilation, tandis que le polymorphisme dynamique est un type de polymorphisme qui collecte les informations pour appeler une méthode au moment de l'exécution.
- Le super mot-clé peut être utilisé pour accéder aux méthodes de la classe parent à partir de la classe enfant.
Java
- Polymorphisme Java
- Tutoriel de classe abstraite C # avec exemple :Qu'est-ce que l'abstraction ?
- Méthode String Length () en Java:comment trouver avec l'exemple
- Méthode Java String charAt() avec exemple
- Méthode Java String contains() | Vérifier la sous-chaîne avec l'exemple
- Méthode Java String endsWith () avec exemple
- Variable statique en Java :Qu'est-ce qu'un bloc statique et une méthode [Exemple]
- Interface vs classe abstraite en Java :quelle est la différence ?
- Java BufferedReader :comment lire un fichier en Java avec un exemple