Heim  >  Artikel  >  Java  >  Dynamische vs. statische Bindung: Wie löst Java Methodenaufrufe zur Laufzeit auf?

Dynamische vs. statische Bindung: Wie löst Java Methodenaufrufe zur Laufzeit auf?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 09:13:30740Durchsuche

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

Polymorphismus verstehen: Dynamische von statischen Bindungen in Java unterscheiden

In Java ist Polymorphismus die Fähigkeit einer Variablen, auf Objekte unterschiedlicher Art zu verweisen Klassen gibt es in zwei Formen: dynamisch und statisch.

Statische Bindung (Bindung zur Kompilierungszeit)

Bei der statischen Bindung sind Methodenaufrufe an das spezifische Objekt gebunden Kompilierzeit. Dies tritt auf, wenn Methoden mit unterschiedlichen Signaturen in derselben Klasse definiert sind, was als Methodenüberladung bezeichnet wird. Zum Beispiel:

<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>

Dynamische Bindung (Laufzeitbindung)

Bei der dynamischen Bindung werden Methodenaufrufe zur Laufzeit an das spezifische Objekt gebunden. Dies geschieht, wenn Unterklassen in ihren Oberklassen definierte Methoden überschreiben. Zum Beispiel:

<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>

Das obige ist der detaillierte Inhalt vonDynamische vs. statische Bindung: Wie löst Java Methodenaufrufe zur Laufzeit auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn