Is Method Overloading considered polymorphism? [closed]

Is Method Overloading considered part of polymorphism?


There are different types of polymorphism:

  • overloading polymorphism (also called Ad-hoc polymorphism)
  • overriding polymorphism

So yes it is part of polymorphism.


"Polymorphism" is just a word and doesn't have a globally agreed-upon, precise definition. You will not be enlightened by either a "yes" or a "no" answer to your question because the difference will be in the chosen definition of "polymorphism" and not in the essence of method overloading as a feature of any particular language. You can see the evidence of that in most of the other answers here, each introducing its own definition and then evaluating the language feature against it.


Strictly speaking polymorphism, from wikipedia:

is the ability of one type, A, to appear as and be used like another type, B.

So, method overloading as such is not considered part of this definition polymorphism, as the overloads are defined as part of one type.

If you are talking about inclusion polymorphism (normally thought of as overriding), that is a different matter and then, yes it is considered to be part of polymorphism.

inclusion polymorphism is a concept in type theory wherein a name may denote instances of many different classes as long as they are related by some common super class.


There are 2 types of polymorphism.

  1. static
  2. dynamic.

Overloading is of type static polymorphism.. overriding comes under dynamic (or run-time) polymorphism..

ref. http://en.wikipedia.org/wiki/Polymorphism_(computer_science) which describes it more.