We've got the experts to help. I would like to clarify my understanding of abstract classes. As I understand it, a class declared abstract is an incomplete class, not meant to be instantiated. Java would complain if an abstract class were created using a class instance creation expression.
Polymorphism allows a type to have many behaviors.
Remember this definition, as we'll come back to it. It is absolutely true that you cannot instantiate an abstract class. Something else is going on here. Factory methods hide the implementation of the object that they create. That detail remains hidden from you.