Maison > Java > javaDidacticiel > 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
Libérer: 2024-10-31 09:13:30
original
934 Les gens l'ont consulté

 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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal