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( );