Polymorphism in Java


Java Polymorphism :

Polymorphism(from Greek meaning "many forms") in java allows a single name/operator to be associated with different operations depending on the type of data passed to it. In C++, it is achieved by function overloading, operator over loading and dynamic binding(Virtual functions).

There are two types of polymorphism in Java: We can perform polymorphism in java by method overloading and method overriding.


1) Java Runtime Polymorphism (Dynamic Polymorphism):

It is also known as Dynamic Method Dispatch.

Dynamic polymorphism is a process in which a call to an overridden method is resolved at runtime, thats why it is called runtime polymorphism.

Examples 1:



Output :

 Overriding Method

Method overloading is in the same class, where more than one method have the same name but different signatures.


Example 2:



Output :

 Ha.ha.ha. I am Dog class

Example 3:

Output :

 subclass1
 subclass2


2) Java Compile time Polymorphism (Static Polymorphism) :

Compile time polymorphism is also known as static polymorphism.

Method overloading is one of the way java supports static polymorphism. Here we have two definitions of the same method add() which add method would be called is determined by the parameter list at the compile time. That is the reason this is also known as compile time polymorphism.

Examples 1:



Output :

 30
 60

Java Method Overloading :

Method overloading is in the same class, where more than one method have the same name but different signatures.

Method overloading is one of the way java supports static polymorphism. Here we have two definitions of the same method add() which add method would be called is determined by the parameter list at the compile time. That is the reason this is also known as compile time polymorphism.

When there are multiple functions with same name but different parameters then these functions are said to be overloaded. Functions can be overloaded by change in number of arguments or/and change in type of arguments.

Examples 1:



Output :

 30
 60


Java Method Overriding :

Method overriding is when one of the methods in the super class is redefined in the sub-class. In this case, the signature of the method remains the same.

Overriding is a feature that allows a subclass or child class to provide a specific implementation of a method that is already provided by one of its super-classes or parent classes.

When a method in a subclass has the same name, same parameters or signature and same return type(or sub-type) as a method in its super-class, then the method in the subclass is said to override the method in the super-class.


Examples 1:

  class Human{
   //Overridden method
   public void eat()
   {
      System.out.println("he is eating");
   }
}
class Boy extends Human{
   //Overriding method
   public void eat(){



   
      System.out.println("I am studying");
   }
   public static void main( String args[]) {
      Boy obj = new Boy();
      //This will call the child class version of eat()
      obj.eat();
   }
}

Output :



Output :

 subclass1
 subclass2