Java - Object-Oriented Programming (OOPS) Concept - Polymorphism (Runtime & Compile Time) Tutorial
Polymorphism is the ability of an object to take more than one form.
There is two way to achieve polymorphism.
- Method Overloading(to achieve compile-time polymorphism)
- Method Overriding(to achieve runtime polymorphism)
Method Overloading (Use to achieve Compile Time Polymorphism)
Suppose in a class, multiple methods with the same name but different parameters exist. Then this is known as method overloading.
Method overloading can be performed by changing the no. of argument and by changing the datatype.
class Addition{
static int arg(int a,int b){return a+b;}
static double arg(double a,double b){return a+b;}
static int arg(int a,int b,int c){return a+b+c;}
}
public class methodoverloading{
public static void main(String[] args){
Addition a=new Addition();
System.out.println(a.arg(1,7));
System.out.println(a.arg(1.0,9.0));
System.out.println(a.arg(1,7,8));
}}
In the above example, there are two methods with name arg but with different no. of parameter. In the first method, there is a two-parameter and in the second method, there is a three-parameter.
In java, the correct method is automatically detected using no. of argument or datatype of the argument.
Method Overloading (Use to achieve Runtime Time Polymorphism)
Suppose a parent class and child class that is achieved using inheritance has the same method name with the same parameter. Then this is known as method overriding.
class Bird{//Parent Class
void fly(){
System.out.println("Bird can Fly");
}
}
public class Parrot extends Bird{ //Child Class
void fly(){
System.out.print("Parrot can Fly ");
}
public static void main(String args[]){
Parrot p=new Parrot();
p.fly();
}
}