昨日も同様の質問をしましたが、別の問題が発生しました。
class Cat {
public void isClawedBy(Cat c, Kitten k){
System.out.println("Clawed by a cat");
}
}
class Kitten extends Cat{
public void isClawedBy(Kitten k, Cat c){
System.out.println("Clawed by a Kit");
}
}
Cat g = new Cat();
Cat s = new Kitten();
Kitten t = new Kitten();
g.isClawedBy(s,t);
s.isClawedBy(t,s);
t.isClawedBy(t,t);
私が混乱している問題は周りt.isClawedBy(t,t);
です。s.isClawedBy(t,s);
s は静的型 cat であるため、エラーがスローされることを理解しています。
しかしt.isClawedBy(t,t);
、「メソッド isClawedBy(Kitten, Cat) は、タイプ Kitten に対してあいまいです」というエラーがスローされます。コードを変更した場合、t.isClawedBy(s,t);
またはt.isClawedBy(t,s);
動作しますが、(t、t) で動作しない理由が不明です。
前もって感謝します