Types de polymorphisme en Java [Polymorphisme statique et dynamique avec exemples]
Publié: 2021-06-18Table des matières
Qu'est-ce que le polymorphisme en Java ?
L'un des concepts importants de la programmation orientée objet (POO) est le polymorphisme, ce qui signifie qu'une même action peut être effectuée de différentes manières. Il est dérivé des mots grecs : poly et morphes signifiant plusieurs et formes. Les différentes formes existent lorsqu'elles sont liées par héritage.
Comme l'héritage qui hérite des méthodes et des attributs d'une classe différente, le polymorphisme applique ces méthodes et effectue différentes tâches. Un objet est capable de se mouler en diverses formes par polymorphisme.
Autrement dit, une entité peut effectuer différentes opérations dans différents scénarios. L'une des utilisations les plus courantes du polymorphisme dans la programmation orientée objet est lorsqu'une référence de classe parent est utilisée pour faire référence à un objet de classe enfant. En savoir plus sur divers concepts et exemples de POO.
Le polymorphisme en Java peut être réalisé par trois méthodes :
Remplacement de méthode : si une superclasse et une sous-classe consistent en la même méthode, alors le remplacement de méthode fait référence au processus de remplacement de la méthode dans la superclasse par la méthode dans la sous-classe. En conséquence, la même méthode sera utilisée dans différentes conditions effectuant différentes opérations.
Sortie du programme :
Langage de programmation Java
Langue anglaise commune
- Surcharge de méthode : la surcharge de méthode fait référence au processus de création de méthodes portant le même nom mais avec des paramètres différents. Les exemples incluent : void func() { … }, void func(int a) { … }, float func(double a) { … }, float func(int a, float b) { … }.
Sortir
**********
##########
- Surcharge d' opérateur : La surcharge d'opérateur est un concept en Java où un opérateur se comporte différemment avec différents opérandes. Les exemples comprennent:
- L'opérateur « + » peut être utilisé à la fois dans l'addition numérique et la concaténation de chaînes.
Addition numérique | Concaténation de chaînes |
int a = 5 ; entier b = 6 ; entier somme = a + b ; // Sortie = 11 | Chaîne en premier = « Python » ; Chaîne seconde = "Programmation" ; nom = premier + deuxième ; // Sortie = Programmation Python |
- Les opérateurs &,| et ! peut être utilisé pour la surcharge logique et au niveau du bit.
Types de polymorphisme en Java
La programmation orientée objet se concentre sur quatre concepts de base, à savoir l'abstraction, l'encapsulation, l'héritage et le polymorphisme. Le polymorphisme est la capacité de traiter les objets différemment en fonction de leur classe et de leurs types de données.
Il existe deux types de polymorphisme en Java : le polymorphisme à la compilation et le polymorphisme à l' exécution en Java . Ce polymorphisme java est également appelé polymorphismes statiques et polymorphismes dynamiques.
1. Polymorphisme statique (ou polymorphisme à la compilation)
Comme la plupart des autres langages de programmation POO, le polymorphisme Java permet l'incorporation de plusieurs méthodes au sein d'une classe. Les méthodes utilisent le même nom mais le paramètre varie. Ceci représente le polymorphisme statique. Ce polymorphisme est résolu au moment du compilateur et est obtenu grâce à la surcharge de la méthode. Trois critères sont fournis dans lesquels les ensembles de paramètres doivent différer :
- Le nombre de paramètres doit varier.
- Les types de paramètres doivent être différents.
- Ordre différent des paramètres. Par exemple, si une méthode accepte une chaîne et un long, tandis que l'autre méthode accepte un long et une chaîne. Cependant, ce type de commande rend difficile la compréhension de l'API.
En raison de la différence des paramètres, chaque méthode a une signature différente. Le compilateur Java a une idée de la méthode appelée.
Apprenez des cours de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
Exemple de polymorphisme statique
L'un des moyens par lesquels Java prend en charge le polymorphisme statique est la surcharge de méthode. Un exemple montrant le cas de la surcharge de méthode dans le polymorphisme statique est présenté ci-dessous :
Exemple:
classe SimpleCalculator
{
int add(int a, int b)
{
retourner a+b ;
}
int add(int a, int b, int c)
{
retourner a+b+c ;
}
}
Démo de classe publique
{
public static void main(String args[])
{
SimpleCalculator obj = new SimpleCalculator();
System.out.println(obj.add(25, 25));
System.out.println(obj.add(25, 25, 30));
}
}
Sortie du programme
50
80
2. Polymorphisme dynamique (ou polymorphisme d'exécution en Java)
Dans cette forme de polymorphisme en java , le compilateur ne détermine pas la méthode à exécuter. C'est la machine virtuelle Java (JVM) qui exécute le processus au moment de l'exécution. Le polymorphisme dynamique fait référence au processus lorsqu'un appel à un processus surchargé est résolu au moment de l'exécution. La variable de référence d'une superclasse appelle la méthode redéfinie. Les méthodes implémentées à la fois par la sous-classe et la superclasse fournissent des fonctionnalités différentes tout en partageant le même nom.
Comprendre le processus d'Upcasting est crucial avant de comprendre le concept de polymorphisme d'exécution. L'upcasting fait référence au processus dans lequel un objet de la classe enfant est référencé par une variable de référence de la superclasse. En savoir plus sur le polymorphisme en PHP.
Exemple de polymorphisme dynamique (ou temps d'exécution)
Exemple 1:
Deux classes Bike et Splendor sont créées et la classe de Splendor étend la classe de Bike en remplaçant sa méthode run(). La méthode run() est appelée par la variable de référence de la classe parent. Étant donné que la méthode de la sous-classe remplace la méthode de la classe parente ; la méthode de sous-classe est invoquée au moment de l'exécution.
Le programme
vélo de classe {
void run(){System.out.println("running");}
}
la classe Splendor étend le vélo{
void run(){System.out.println("marcher en toute sécurité avec 30km");}
Publique statique void main(String args[]){
Vélo b = new Splendor();//upcasting
b.run();
}
}
Sortie : marcher en toute sécurité avec 60km
Exemple 2
Deux classes avec les noms "ABC" et "XYZ" sont créées où XYZ est une classe enfant et ABC est une classe parent. Ici, la méthode myMethod() de la classe parent est remplacée par la classe enfant. L'objet de classe enfant est affecté à la référence de classe parent.
Programme:
classe ABC{
public void maMéthode(){
System.out.println("Méthode remplacée");
}
}
la classe publique XYZ étend ABC{
public void maMéthode(){
System.out.println("Méthode de remplacement");
}
public static void main(String args[]){
ABC obj = nouveau XYZ();
obj.maMéthode();
}
}
Sortir
Méthode de remplacement
Conclusion
Le concept de polymorphisme en Java est l'une des fonctionnalités les plus utiles de la programmation orientée objet. De plus, la possibilité d'invoquer une méthode à la fois au niveau statique et au moment de l'exécution élargit son applicabilité.
L'idée derrière l'introduction du concept de polymorphisme est la flexibilité. De plus, la possibilité de traiter un grand nombre d'objets dans une seule variable de référence facilite un peu le codage. Par conséquent, le concept doit être utilisé dans les tâches de codage quotidiennes et embrasser son efficacité.
Si vous souhaitez en savoir plus sur la technologie logicielle, son développement et le mécanisme qui la sous-tend, vous pouvez consulter le cours Executive PG Program in Software Development - Specialization in Full Stack Development proposé par upGrad. Le cours de spécialisation est un programme en ligne de 23 semaines offrant plus de 300 études de cas pour améliorer vos connaissances et les outils disponibles et le langage de programmation pour améliorer vos compétences pratiques. Si vous avez d'autres questions concernant le cours, envoyez-nous un message. Notre équipe vous contactera.