gpt4 book ai didi

java - 多态性 - 简单

转载 作者:行者123 更新时间:2023-12-01 23:46:11 24 4
gpt4 key购买 nike

只是对如何遵循正确答案感到困惑。

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) = 被猫抓了。由于 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);

输出为:被猫抓了被猫抓了被猫抓了

当 t 被调用时它是如何工作的?

最佳答案

关于第二个查询:t.isClawedBy(t),给出Clawed by Cat的输出。

因为 t 是一个 Kitten 并且在方法 t.isClawedBy(t) 中传递的参数也是 Kitten code> 时,将调用父类(super class) Cat 中的方法,因为它与参数完美匹配。

关于java - 多态性 - 简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17016367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com