gpt4 book ai didi

Java 虚函数调用

转载 作者:行者123 更新时间:2023-11-30 07:33:43 31 4
gpt4 key购买 nike

据我了解,Java 中的所有函数调用都是虚拟的,数字文字的类型为 int。但为什么下面示例中的输出有所不同?

public class A {
public int f(long d) {
return 2;
}
}
public class B extends A {
public int f(int d) {
return 1;
}
}
public class M {
public static void main(String[] args) {
B b = new B();
A ab = b;
System.out.println(b.f(1));
System.out.println(ab.f(1));
}
}

最佳答案

您不会覆盖任何内容。

  • 第一次调用 System.out.println(b.f(1)); 返回 1,因为它适用于 B 类,即使方法名称相同,但参数不同(longint 不同)。

  • 如果参数相同(int d),结果将为1,因为它覆盖了(@Override ) 来自类 A 的方法。

  • 现在,您知道为什么第二次调用 System.out.println(ab.f(1)); 返回 2 了。查看它是从哪个类调用的。

关于Java 虚函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35704480/

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