只是对如何遵循答案感到困惑是正确的。
class Cat {
public void isClawedBy(Cat c){
System.out.println("Clawed by a cat");
}
}
class Kitten extends Cat{
public void isClawedBy(Kitten c){
System.out.println("Clawed by a Kit");
}
}
如果调用以下
Cat g = new Cat();
Cat s = new Kitten();
Kitten t = new Kitten();
g.isClawedBy(t);
s.isClawedBy(t);
t.isClawedBy(t);
答案如何:被猫抓 被猫抓 被小猫抓
我对为什么 s.isClawedBy(t) = Clawed by Cat 感到困惑。由于 s 的动态类型是一只小猫,而 t 是一只小猫。是不是因为参数不同,所以它不会覆盖它?
另一部分我很困惑。//注意参数已被交换。
class Cat {
public void isClawedBy(Kitten c){
System.out.println("Clawed by a cat");
}
}
class Kitten extends Cat{
public void isClawedBy(Cat c){
System.out.println("Clawed by a Kit");
}
}
如果调用以下
Cat g = new Cat();
Cat s = new Kitten();
Kitten t = new Kitten();
g.isClawedBy(t);
s.isClawedBy(t);
t.isClawedBy(t);
输出为:Clawed by Cat Clawed by Cat Clawed by Cat
当 t 被调用时它是如何工作的?