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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 09:13:30860browse

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

Understanding Polymorphism: Distinguishing Dynamic from Static Bindings in Java

In Java, polymorphism, the ability of a variable to refer to objects of different classes, comes in two forms: dynamic and static.

Static Binding (Compile-Time Binding)

In static binding, method calls are bound to the specific object at compile time. This occurs when methods with different signatures are defined in the same class, known as method overloading. For example:

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

Dynamic Binding (Run-Time Binding)

In dynamic binding, method calls are bound to the specific object at run time. This occurs when subclasses override methods defined in their superclasses. For instance:

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

The above is the detailed content of Dynamic vs. Static Binding: How Does Java Resolve Method Calls at Runtime?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn