наследование и полиморфизм перегрузки Java-метода
Вот контрольный вопрос, с которым я сталкивался.
Пусть Хоук будет подклассом Bird. Предположим, у некоторого класса есть два перегруженных метода: void foo (Hawk h) и void foo (Bird b). Какая версия будет выполнена в вызове foo (x) после объявления Bird x = new Hawk ();
Вот код, который у меня есть, может кто-нибудь объяснить мне, почему выполняется foo (птица b)?
public class MPractice {
public static void main(String args[]) {
Bird x = new Hawk();
Third y = new Third();
y.foo(x);
}
}
public class Third {
void foo(Hawk h) {
System.out.println("Hawk");
}
void foo(Bird b) {
System.out.println("Bird");
}
}