我有一种行为,我不理解 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。