Maison  >  Article  >  Java  >  Liaison dynamique ou statique : comment Java résout-il les appels de méthode au moment de l'exécution ?

Liaison dynamique ou statique : comment Java résout-il les appels de méthode au moment de l'exécution ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 09:13:30740parcourir

 Dynamic vs. Static Binding: How Does Java Resolve Method Calls at Runtime?

Comprendre le polymorphisme : distinguer les liaisons dynamiques des liaisons statiques en Java

En Java, le polymorphisme, la capacité d'une variable à faire référence à des objets de différentes classes, se présente sous deux formes : dynamique et statique.

Liaison statique (liaison au moment de la compilation)

Dans la liaison statique, les appels de méthode sont liés à l'objet spécifique à temps de compilation. Cela se produit lorsque des méthodes avec des signatures différentes sont définies dans la même classe, ce que l'on appelle la surcharge de méthodes. Par exemple :

<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 obj = new Calculation();
        obj.sum(10, 10); // 20
        obj.sum(10, 10, 10); // 30
    }
}</code>

Liaison dynamique (liaison au moment de l'exécution)

Dans la liaison dynamique, les appels de méthode sont liés à l'objet spécifique au moment de l'exécution. Cela se produit lorsque les sous-classes remplacent les méthodes définies dans leurs superclasses. Par exemple :

<code class="java">class Animal {
    public void move() { System.out.println("Animals can move"); }
}

class Dog extends Animal {
    public void move() { System.out.println("Dogs can walk and run"); }
}

public class TestDog {
    public static void main(String[] args) {
        Animal a = new Animal(); // Animal reference and object
        Animal b = new Dog(); // Animal reference but Dog object

        a.move(); // output: Animals can move
        b.move(); // output: Dogs can walk and run
    }
}</code>

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