Когда переопределенный метод вызывается через ссылку на суперкласс, Java определяет, какую версию этого метода выполнить, основываясь на типе объекта, на который ссылается во время вызова.Таким образом, это определение выполняется во время выполнения.
Это тип объекта, на который ссылаются (а не тип ссылочной переменной), который определяет, какая версия переопределенного метода будет выполняться.
Поэтомуесли суперкласс содержит метод, который переопределяется подклассом, то при обращении к различным типам объектов через ссылочную переменную суперкласса выполняются разные версии метода.Вот почему вы получаете вывод: Автор - Мала Гупта