gpt4 book ai didi

java - java有编译时绑定(bind)吗?

转载 作者:行者123 更新时间:2023-12-02 08:30:43 28 4
gpt4 key购买 nike

据说重载在java中具有编译时绑定(bind),但实际上对象是在运行时创建的,所以我很困惑编译时绑定(bind)是如何发生的。

最佳答案

这意味着编译器仅根据所涉及表达式的编译时类型来确定要使用的重载。示例代码:

class Parent
{
void foo(Object x)
{
System.out.println("Parent.foo(Object)");
}
}

class Child extends Parent
{
void foo(String x)
{
System.out.println("Child.foo(String)");
}
}


public class Test
{
public static void main(String[] args)
{
Child c = new Child();
c.foo("hello"); // Calls Child.foo(String)
Parent p = c;
p.foo("hello"); // Calls Parent.foo(Object)
}
}

请注意变量的声明类型(分别为 pcParentChild)如何确定考虑哪些重载。

请注意,这与覆盖不同,覆盖是基于目标对象的执行时间类型。

关于java - java有编译时绑定(bind)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3456951/

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