This is a very important concept in Object Oriented Programming.
Polymorphism basically means taking multiple forms. (Poly = many, Morph = form)
For example, take me. In my school, I am a Student. For my brother, I am a Teacher. I am also a Friend, a Son, a Grandson.
A person at the same time can have different characteristics -- this is called polymorphism.
Here is a super-woman (like my mom) doing multiple things. She is an example of Polymorphism.
Java supports both compile time polymorphism and runtime polymorphism.
I will explain this using a code example.
When we run this, the output is:
I am Child1
I am Child2
What happened here is method overriding. The child classes overrided the functionality of hello() implemented in the super class.
This is a real basic but important example of Polymorphism. It's that simple! When I first heard about "Polymorphism", I was baffled, but hopefully this simple example helps you understand this concept!