You are on page 1of 3

Difference Between Method Overloading And Method

Overriding In Java
PRAMODBABLAD FEBRUARY 2, 2015 POLYMORPHISM 5 COMMENTS

What is the difference between method overloading and method


overriding in java?
Method overloading and method overriding are two important java concepts which allows java programmer to define the methods with
same name but different behavior. Both method overloading and method overriding shows polymorphism. It is also one of the most
asked java interview question for freshers. In this article, I have tried to list out the differences between method overloading and
method overriding in java. You can also go through the some basics about method overloading and method overriding in
java here and here.

Method Overloading Method Overriding


When a class has more than one
When a super class method is
method with same name but with
Definition modified in the sub class, then we
different arguments, then we call it
call this as method overriding.
as method overloading.
Overloaded methods must have Overridden methods must have
different method signatures.  That same method signature. I.e. you
means they should differ at least in must not change the method
Method Signature any one of these three things – name, types of arguments, number
Number of arguments, Types of of arguments and order of
arguments and order of arguments. arguments while overriding a
But, they must have same name. super class method.
The return type of the overridden
method must be compatible with
that of super class method. That
means if super class method has
primitive type as its return type,
Overloaded methods can have
Return Types then it must be overridden with
same or different return types.
same return type. If super class
method has derived type as its
return type then it must be
overridden with same type or its
sub class type.
While overriding a super class
method either you can keep the
Visibility(private, public, Overloaded methods can have
same visibility or you can increase
protected and default) same visibility or different visibility.
the visibility. But you can’t reduce
it.
Overloaded methods can be static
Static Context or not static. It does not affect the You can’t override a static method.
method overloading.
Binding between method call and Binding between method call and
Binding method definition happens at method definition happens at run
compile time (Static Binding). time (Dynamic Binding).
Polymorphism It shows static polymorphism. It shows dynamic polymorphism.
Private methods can be Private methods can’t be
Private methods
overloaded. overridden.
Final Methods Final methods can be overloaded. Final methods can’t be overridden.
For method overriding, two classes
For method overloading, only one are required – super class and
Class Requirement class is required. I.e. Method sub class. That means method
overloading happens within a class. overriding happens between two
classes.
Method Overloading Example :
1 public class MainClass
2 {
3     static String concateString(String s1, String s2)
4     {
5         return s1+s2;
6     }
7  
8     static String concateString(String s1, String s2, String s3)
9     {
10         return s1+s2+s3;
11     }
12  
13     static String concateString(String s1, String s2, String s3, Strin
14     {
15         return s1+s2+s3+s4;
16     }
17  
18     public static void main(String[] args)
19     {
20         concateString("ONE", "TWO");
21  
22         concateString("ONE", "TWO", "THREE");
23  
24         concateString("ONE", "TWO", "THREE", "FOUR");
25     }
26 }

Method Overriding Example :


1 class SuperClass
2 {
3     void SuperClassMethod()
4     {
5         System.out.println("SUPER CLASS METHOD");
6     }
7 }
8  
9 class SubClass extends SuperClass
10 {
11     @Override
12     void SuperClassMethod()
13     {
14         System.out.println("SUPER CLASS METHOD IS OVERRIDDEN");
15     }
16 }

You might also like