関連しているが、私は新しいC.doSomething(new Foo());
を呼び出すと、印刷されます推測するのは、私がのJava - 同じ名前を持つ2つの方法で、異なる種類の同じ引数が、型が階層的に
Interface A {
public void doSomething(Object a);
}
Interface B {
public void doSomething(Foo b);
}
と
Class C implements A, B {
public void doSomething(Object a) { print("a"); }
public void doSomething(Foo b) { print("b"); }
}
があるとしましょう"b"
FooはObjectを継承しています。
しかし、私はサブメソッドから共通の行動をしたい場合について:
Class C implements A, B {
public void doSomething(Object a) { print("common behavior from " + a); }
public void doSomething(Foo b) { doSomething((Object) b); }
public void doSomething(Bar c) { doSomething((Object) c);}
}
は、その仕事は私がFoo
とBar
でdoSomething
を呼び出すか、彼らが原因で無限ループになってしまいます終了は((Object) c) instanceof Bar == true
ですか?
Javaはどのメソッドを呼び出すかをどのように定義しますか?
あなたはそれを試して調べるべきです。 Javaはその動作を[specifications](https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.12.2.5)で定義しています。 – 4castle