What is difference between method Overloading and Overriding in Java?
Its one of the popular Interview question asked to Java developer with 0 - 1 year experience. We'll understand method overloading followed by method overriding.
Method Overloading
Source code (MethodOverload.java)
Method Overriding
In case of class(sub-class: AddAndDisplay) extends/implements other class/interface (super-class: Addition).
Source code (Addition.java)
Source code (AddAndDisplay.java)
Source code (MethodOverride.java)
Method Overloading
Same method name but different parameters in class.
Source code (MethodOverload.java)
/**
* Example of method overloading
*
* @author javaQuery
* @date 5th October, 2016
* @Github: https://github.com/javaquery/Examples
*/
public class MethodOverload {
public int x = 0;
/**
* Method overloading - Same method name(getAndIncrement) with no parameter.
* Increment x by 1.
*
* @return
*/
public int getAndIncrement() {
x = x + 1; // you can also use like x = getAndIncrement(1);
return x;
}
/**
* Method overloading - Same method name(getAndIncrement) with parameter.
* Increment x by given count(value).
*
* @param add
* @return
*/
public int getAndIncrement(int add) {
x = x + add;
return x;
}
public static void main(String[] args) {
MethodOverload methodOverload = new MethodOverload();
System.out.println("calling 'getAndIncrement()': " + methodOverload.getAndIncrement());
System.out.println("calling 'getAndIncrement(int add)': " + methodOverload.getAndIncrement(2));
}
}
Output
calling 'getAndIncrement()': 1 calling 'getAndIncrement(int add)': 3
Method Overriding
In case of class(sub-class: AddAndDisplay) extends/implements other class/interface (super-class: Addition).
Method with same name and parameter created in sub-class.
Note: Overriding is used when you don't want to use default implementation provided by parent class and will write your own piece of implementation in overridden method.
Source code (Addition.java)
/**
* Example of method overriding.
*
* @author javaQuery
* @date 6th October, 2016
* @Github: https://github.com/javaquery/Examples
*/
public class Addition {
/**
* Add two numbers and return the result.
* @param x
* @param y
* @return
*/
public int add(int x, int y) {
return x + y;
}
}
Source code (AddAndDisplay.java)
/**
* Example of method overriding.
*
* @author javaQuery
* @date 6th October, 2016
* @Github: https://github.com/javaquery/Examples
*/
public class AddAndDisplay extends Addition {
/**
* Method override of class Addition.
* We're overriding 'add' method because we want to print
* values of 'x' and 'y' to console along with the 'result'.
* @param x
* @param y
* @return
*/
@Override
public int add(int x, int y) {
int result = x + y;
System.out.println("(x:" + x + ",y:" + y + ")");
System.out.println("result: " + result);
return result;
}
}
Source code (MethodOverride.java)
/**
* Example of method overriding.
*
* @author javaQuery
* @date 6th October, 2016
* @Github: https://github.com/javaquery/Examples
*/
public class MethodOverride {
public static void main(String[] args) {
/* Add two number using super class Addition's add method */
Addition addition1 = new Addition();
int result = addition1.add(20, 30);
System.out.println("calling Addition.add(int x, int y)");
System.out.println("result: " + result);
System.out.println("********************************************");
System.out.println("calling AddAndDisplay.add(int x, int y)");
Addition addition2 = new AddAndDisplay();
/**
* Notice: We created object of 'Addition' using 'AddAndDisplay'.
*
* So when we call Addition.add(int x, int y) method it'll execute
* AddAndDisplay.add(int x, int y) method because 'add' is
* overridden.
*
* It'll hide the superclass Addition's add method and execute
* subclass AddAndDisplay's method.
*/
addition2.add(10, 20);
}
}
Outputcalling Addition.add(int x, int y) result: 50 ******************************************** calling AddAndDisplay.add(int x, int y) (x:10,y:20) result: 30
0 comments :