gpt4 book ai didi

java - Java中的接口(interface)方法重载

转载 作者:搜寻专家 更新时间:2023-11-01 01:36:23 24 4
gpt4 key购买 nike

我有一个我无法理解的 Java 重载行为。

这是我的代码:

interface I {}

class A implements I {}

class B {
public void test(I i) {}

public void test (A a) {}
}

当我调用以下行时:

 I a = new A();
b.test(a);

我以为被调用的方法是 test(A) 但显然是 test(I)

我不明白为什么。在运行时,我的变量 a 是 A 甚至 A 继承了 I。

最佳答案

因为引用类型是 I,即使你有 A 类型的对象。

A = new A();

将调用方法 test (A a) {}

根据 JLS 第 15 章:

The most specific method is chosen at compile-time; its descriptor determines what method is actually executed at run-time.

关于java - Java中的接口(interface)方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12094156/

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