@aaltw

Зачем объект класса создается через родительский класс?

https://www.w3schools.com/cs/cs_polymorphism.php

В данном руководстве рассказывают о полиморфизме и приводят примеры. В одном из происходит следующее:
Animal myAnimal = new Animal();  // Create a Animal object
Animal myPig = new Pig();  // Create a Pig object
Animal myDog = new Dog();  // Create a Dog object

После чего дополняют, что методы не переопределились и что нужно использовать virtual и override.

Я попробовал изменить создание объектов на обычное:
Animal myAnimal = new Animal();  // Create a Animal object
Pig myPig = new Pig();  // Create a Pig object
Dog myDog = new Dog();  // Create a Dog object

И все работает как должно, с переопределением.

Зачем вообще может понадобиться создание объекта через родителя?
Parent myChild = new MyChild( );
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
Это не "создание объекта через родителя". Создание во всех случаях происходит одинаково. Здесь ссылка на ребенка сохраняется в переменную типа родителя. В этом, типа, и заключается динамический полиморфизм. Смысл в том, что ты можешь разных, заранее не определенных детей, складывать в коллекцию с типом родителя, например. Или принимать и возвращать из методов - тоже родителя, а не конкретных детей.
Зачем? Например, у тебя есть объект клетка, который содержит животное. Условно, ты не должен делать разные клетки - PigCage, DogCage, CatCage, а должен использовать одну.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы