Polymorphism allows you to program in the general form by boiling down characteristics and functionality common to multiple different classes which derive from, and share, the same base type. This allows you to program code generic to all class types and overriding only in specific types of subclasses. The best way to show this is with a brief example...
Consider a Car class. A 67 mustang, a 1996 accent, and a 1964 Chevy Impala are all types of cars, but have their own unique characteristics. Polymorphism allows us to create a function like Drive(), which is common to all Cars and is the same (in theory) and place it into the base class, a generic form in our Car base class. All of our classes then inherit the basic principle of Drive... a generic form of the activity. But as you may or may not know, the 1996 accent had the gear shifter on the middle console, so the instructions to drive would be a bit different than the other classes who may have their gear shift handle on the steering column. So for our Accent class we can create our own version of Drive which we override the base class and implement the specific form that takes the shifter on the console.
So Drive in our base class would be designed as generic that could apply to all subclasses and has functionality that is shared. By doing this we cut down on repetitive code (because we don't have to apply the same code to each subclass) and we provide basic functionality.
Hopefully this makes sense.