Comprendre le polymorphisme dynamique et statique en Java
Le polymorphisme en Java permet aux objets de différentes classes de se comporter de manière similaire, malgré leurs différences. Cette flexibilité est obtenue grâce à deux types de polymorphisme : dynamique et statique.
Polymorphisme dynamique
Également connu sous le nom de polymorphisme d'exécution, le polymorphisme dynamique se produit lorsqu'un remplacement de méthode dans les sous-classes a lieu. L'appel à la méthode de substitution est résolu au moment de l'exécution en fonction du type d'objet réel.
Considérons l'exemple suivant :
<code class="java">class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { @Override public void move() { System.out.println("Dogs can walk and run"); } } public class Main { public static void main(String[] args) { Animal animal = new Animal(); // Animal reference and object Animal dog = new Dog(); // Animal reference but Dog object animal.move(); // Output: Animals can move dog.move(); // Output: Dogs can walk and run } }</code>
Dans cet exemple, la méthode move() est remplacée dans le Cours de chien. Lorsque la référence animale appelle la méthode move(), le type réel de l'objet (Animal ou Chien) détermine le comportement au moment de l'exécution. Il s'agit d'un polymorphisme dynamique.
Polymorphisme statique (surcharge de méthode)
Le polymorphisme statique, également appelé polymorphisme au moment de la compilation, se produit lorsque plusieurs méthodes portant le même nom mais différentes listes de paramètres existent dans la même classe. L'appel à la bonne méthode est déterminé au moment de la compilation en fonction du nombre et des types d'arguments passés.
Considérons l'exemple suivant :
<code class="java">class Calculation { void sum(int a, int b) { System.out.println(a + b); } void sum(int a, int b, int c) { System.out.println(a + b + c); } public static void main(String[] args) { Calculation calculation = new Calculation(); calculation.sum(10, 10, 10); // Output: 30 calculation.sum(20, 20); // Output: 40 } }</code>
Dans cet exemple, sum() La méthode est surchargée avec différentes listes de paramètres. L'appel à la bonne méthode sum() est déterminé au moment de la compilation en fonction du nombre d'arguments passés. Il s'agit d'un polymorphisme statique ou d'une surcharge de méthode.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!