well actually you can compare Overloading and Overriding.
The above three are overloaded methods as they have the same name but have different parameters. Overloaded methods have static polymorphism as their calls are bound at compile time. So if you call these as add(1.2f, 3.5f); //calls 3 add(2,3); //calls 1 add(1,2,3); //calls 2
The above is overriding. method marked as 2 is overriding method marked as 1 as they have same name and parameters. Their calls are bound to appropriate methods at run-time. So they are dynamically polymorphic.
It is just called as static polymorphism. I also know that it is not polymorphism. But since the method name is same and parameters are changed, it is called static polymorphism as compiler can detect which method will be called. At least it was called static polymorphism when we used to study C++ in our school days....