Коротко: В рамках полиморфизма ваша задача решается созданием нового объекта, A2.
Объяснение: Если определить метод в классе-родителе, а затем переопределить его у ребенка, то всегда будет вызван метод фактического класса объекта, т.е. класса чей конструктор был вызван при создании объекта. Вызываемый метод не будет зависеть от типа ссылки на этот объект. За счет этого, собственно, достигается полиморфизм: Вам не нужно знать, какая именно реализация метода у объекта, который вам передали, и вообще реальный класс объекта. Вы объявляете ссылку на интерфейс/абстрактный класс/открытый класс в качестве параметра вашей функции/конструктора вашего класса и работаете с доступными этой ссылке методами, чтобы сделать то, для чего ваша функция/класс предназначен. Тем самым давая возможность клиенту варьировать поведение вашего кода.
Приведение типа дает доступ к специфичным для конкретного класса полям, т.е. был бы в A2 ещё какой-то метод (не реализация метода родителя, а именно что-то свое), после приведения вы могли бы его вызывать. Но это, опять же, не про полиморфизм.