В чем смысл приведения типа Object Implicit?

Я стучал головой, чтобы понять реальное использование приведения типов объектов в Java и почему оно вообще там есть. Смотрите пример ниже.

Мой вопрос в форме комментариев ниже.

Пожалуйста, не предлагайте мне пойти куда-нибудь. Я уже сделал это. Пожалуйста, ответьте мне напрямую, если знаете. Благодарю.

Проверьте этот код с переопределенным методом 'scream' Я не получаю ошибку времени компиляции. Смотрите комментарии тоже

    Animal aniObj = new Animal();
    Animal dogAniObj = new Dog();
    Dog dogObj = new Dog();

    ArrayList<Animal> animalArrayList = new ArrayList<Animal>();

    animalArrayList.add(aniObj);
    animalArrayList.add(dogAniObj);
    animalArrayList.add(dogObj);//Here when I am able to add the Dog object there no point in creating dogAniObj above

    aniObj.scream();//Calls scream of Animal
    dogAniObj.scream();//Calls scream of Dog
    dogObj.scream();//Calls scream of Dog. Then why do i need above statement? Why to attain polymorphic behavior when we can directly call scream method with the Dog object when needed?

1 ответ

Это то, что Java дает вам как полиморфизм времени выполнения, во время выполнения, какова ссылка на объект, который будет вызываться, будет вызван этот экземпляр метода.

Подумайте, что вы пишете какую-то общую библиотеку lib/framework, тогда все, что вы хотите использовать, это Animal класс, который является основой для всех других подклассов, таких как Dog, Cat и т. д. тогда вы не можете объявить своих участников как Dog myDog or Cat myCat там должно быть Animal myAnimal так что он может принять все подклассы животных.

Вот почему animalArrayList должен всегда брать Animal и его варианты, ошибки компиляции не возникает.

Никогда не знаешь Animal класс может быть расширен вашими пользователями lib для создания многих других классов Animal.

Другие вопросы по тегам