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 を継承します。