Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

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-




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

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

Surcharge de méthode

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é


Java

  1. Polymorphisme Java
  2. Tutoriel de classe abstraite C # avec exemple :Qu'est-ce que l'abstraction ?
  3. Méthode String Length () en Java:comment trouver avec l'exemple
  4. Méthode Java String charAt() avec exemple
  5. Méthode Java String contains() | Vérifier la sous-chaîne avec l'exemple
  6. Méthode Java String endsWith () avec exemple
  7. Variable statique en Java :Qu'est-ce qu'un bloc statique et une méthode [Exemple]
  8. Interface vs classe abstraite en Java :quelle est la différence ?
  9. Java BufferedReader :comment lire un fichier en Java avec un exemple