Просто путайте, как правильно ответить.Полиморфизм - Простой
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);
Как ответ: когтистого по Cat когтистого по Cat когтистого по Котенок
Я смущен о том, почему s.isClawedBy (t) = когтистая по 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);
Выход: когтистой по Cat когтистой по Cat когтистой по Cat
Как это работает, когда т называется?
Если вместо этого было 't.isClawedBy (g);' g типа типа Cat. Тогда это будет когтировано киттом? – user2469515
Исправить. Тогда будет вызван метод с аргументом 'Cat', поэтому вывод будет _Clawed by Kit_ – aksh1t