gpt4 book ai didi

java - Java 中的函数覆盖重载

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:16 25 4
gpt4 key购买 nike

覆盖和重载有什么区别?

最佳答案

  • 重载:在编译时根据指定参数的数量和类型选择方法签名

  • 覆盖:根据目标对象的实际类型(与表达式的编译时类型相反)在执行时选择方法实现

    <

例如:

class Base
{
void foo(int x)
{
System.out.println("Base.foo(int)");
}

void foo(double d)
{
System.out.println("Base.foo(double)");
}
}

class Child extends Base
{
@Override void foo (int x)
{
System.out.println("Child.foo(int)");
}
}

...

Base b = new Child();
b.foo(10); // Prints Child.foo(int)
b.foo(5.0); // Prints Base.foo(double)

这两个调用都是重载 的例子。有两个方法称为 foo,由编译器决定调用哪个签名。

第一个调用是覆盖 的示例。编译器选择签名“foo(int)”,但在执行时,目标对象的类型决定了要使用的实现应该是 Child 中的实现。

关于java - Java 中的函数覆盖重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2047793/

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