Я сейчас изучаю Java и не могу понять эту тему.ссылки на объекты подкласса с суперклассом.После просмотра нескольких веб-сайтов и постов мое замешательство только усилилось.Пример кода:
public abstract class Bird {
private void fly() {
System.out.println("Bird is flying");
}
public static void main(String[] args) {
Bird bird = new Pelican();
bird.fly();
}
}
class Pelican extends Bird {
protected void fly() {
System.out.println("Pelican is flying");
}
}
Вывод «Птица летит» - почему?
Также у меня есть 3 вопроса:
Bird bird = new Pelican();
Вчасть выше, что я могу использовать вместо типа Bird (если есть больше классов, расширяющих Bird)?Я готовлюсь к экзамену OCA 1, и вопросы по этой теме меня сильно смущают.
Какие методы и переменные выводятся при использовании этих ссылок?В приведенном выше примере объект пеликана создан, но запускается метод fly: bird?
Если кастинг выполнен, какие типы я могу использовать и какие типы я не могу?
Есть несколько вопросов об этом на stackoverflow и других веб-сайтах Java, но несколько источников, несколько ответов сбивают меня с толку.Я понимаю, что время ценно, но кто-то может, пожалуйста, раз и навсегда прояснить это сомнение для меня?