1. Method Overloading:
Method overloading means a same method with same name can have different implementations/body
by changing one of the follwing thing:
1) Number of Parameters
2) Order of Parameters
3) Type of Parameter
i. Method overloading can be performed only within class but not in the class in parent-child relations.
ii. Method overloading follows the Compile Time polymorphism means the "Method resolution is done by the comipler at compile time based on the object reference".
iii. Method overloading is also called as static polymorphism or Early binding or compile time polymophism.
class Test
{
void m1()
{
System.out.println("m1 with no-Parameter");
}
void m1(int x)
{
System.out.println("m1 with 1-Parameter");
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();//m1 with no Parameter
t.m1(10);//m1 with 1 Parameter
}
}
2. Method Overriding:
i. If a child class is not satisfied with the method implementation/body of Parent class method, in that case child class can re-define the parent class method(can change the implementation/body) without changing the signature.
ii. Re-definfing the parent class method in child class is called as method overriding.
iii. Method Overriding follows Runtime polymorphism means the method resolution is done by the JVM at runtime based on the runtime object.
iv. Method Overriding is also called as Dynamic Polymorphism or Late Binding.
v. Method Overriding can be done only in Parent-Child relation.
vi. Method Overriding is best way to desing the "loose coupling System " in which the degree of dependency between the java components are very less.
class Parent
{
void m1()
{
System.out.println("m1 Of Parent!!");
}
}
class Parent extends Child
{
void m1()
{
System.out.println("I am Changing the body of Parent method in child class!!");
System.out.println("m1 Of Child!!");
}
}
class OverrideDemo
{
public static void main(String[] args)
{
Parent p=new Child();
p.m1();
}
}
Output
---------
I am Changing the body of Parent method in child class!!
m1 Of Child!