gpt4 book ai didi

java - 为什么叫动态绑定(bind)而不是静态绑定(bind)呢?

转载 作者:行者123 更新时间:2023-12-01 07:11:26 25 4
gpt4 key购买 nike

我是 Java 新手,我有些疑问。例如,考虑如下表达式:

a.method()
a.method("string")

人们称它们为“动态调度”。但我确信类型检查器确保名为 method(),method(String a) 的方法可用于对象 a

但是为什么叫“动态”呢?这不是静态调用吗?既然编译器已经发现了?

最佳答案

您发布的示例不会使用动态调度。您已经发布了方法重载的示例。重载情况下的方法调用决定是在编译时完成的。编译器根据传递的形式参数实际参数来决定调用哪个方法。

<小时/>

动态绑定(bind)在您使用方法覆盖时发挥作用,其中实际调用哪个方法的决定被延迟到运行时。

例如:-

class A {
public void demo() { }
}

class B extends A {
public void demo() { }
}

public class Test {
public static void main(String[] args) {
A a = new B();
a.demo(); // B class method will be invoked.

A obj = new A();
obj.demo(); // A class method will be invoked.
}
}

调用哪个方法是根据特定引用指向哪个类实例来决定的,并且只有在运行时才知道。因此动态调度

关于java - 为什么叫动态绑定(bind)而不是静态绑定(bind)呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13518165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com