Maison  >  Article  >  Java  >  Quelle est la différence entre le polymorphisme dynamique et statique en Java ?

Quelle est la différence entre le polymorphisme dynamique et statique en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 11:15:20735parcourir

What is the difference between dynamic and static polymorphism in Java?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn