我昨天问了一个类似的问题,但是又出现了另一个问题。
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)。
提前致谢