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); } }Output
calling Addition.add(int x, int y) result: 50 ******************************************** calling AddAndDisplay.add(int x, int y) (x:10,y:20) result: 30
0 comments :