答えに従う方法が正しいかどうか混乱しています。
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 が呼び出されたときにどのように機能しますか?