There have many definition about polymorphism and overloading. Some people said that overloading is one type of polymorphism. While some people said, they are not the same. Because only one function will be allocate in overloading. While the polymorphism need allocate the memory for each redefined member function. Most of the time new bee programmers are confused about it.
Polymorphism and Overloading are two types of functions that are used in OOP. These are often confused as synonyms because of their similarity in functioning. However, these two are different functions and are used to yield different results.
The word itself explains the clear meaning. 'Poly' means multiple, while 'morphism' means the process of gradual change from one form to another. Polymorphism feature allows the user to handle different data types and functions with a uniform interface. Thus, same thing will have different forms. Technically, Polymorphism is way of implementing Single Interface in multiple Implementation. Polymorphism is a general term which refers to both overloading and overriding.
According to Wikipedia, "The primary usage of polymorphism in industry (object-oriented programming theory) is the ability of objects belonging to different types to respond to method, field, or property calls of the same name, each one according to an appropriate type-specific behavior." Polymorphism is concerned with the application of specific implementations to an interface or a more generic base class.
Method Overloading is a feature in programming languages that allows creating several methods that have the same name but differ from each other in terms of type of input and output. Overloading is done in same class where the functions or methods with the same name have different signatures. There are two rules in function overriding: The overloaded function must differ either by the arity or data types and the same function name is used for various instances of function call.
According to Wikipedia, "Method overloading is usually associated with statically-typed programming languages which enforce type checking in function calls. When overloading a method, you are really just making a number of different methods that happen to have the same name. It is resolved at compile time which of these methods are used."
Polymorphism vs Method overloading
Polymorphism means more than one form, same object performing different operations according to the requirement.
Method overloading means writing two or more methods in the same class by using the same method name, but the passing parameters are different.
Polymorphism can be achieved by using two ways, those are Method overriding and Method overloading.
In Java to achieve polymorphism, a superclass reference variable can hold the subclass object. To achieve the polymorphism every developer must use the same method names in the project.
Polymorphism is the ability for an object to vary behavior based on its type.
Overloading is a form of polymorphism (parametric polymorphism) in the case that a method with the same name can behave differently given different parameter types.
Overloading is when you have the same function name that takes different parameters.
Polymorphism feature allows the user to handle different data types and functions with a uniform interface.