Suppose I have two classes: Animal and Dog. Dog is a subclass of Animal. I do the following code:
Animal a = new Dog();
Now I can call methods
Polymorphism allows you to write a method that works for any Animal:
Animal
public void pet(Animal animal) { ... }
This method would accept Dog, Cat, etc, including subclasses of Animal that are yet to be written.
Dog
Cat
If the method were to take Dog, it would not work for Cat etc.