• Java
    • JAXB Tutorial
      • What is JAXB
      • JAXB Marshalling Example
      • JAXB UnMarshalling Example
  • Spring Tutorial
    • Spring Core Tutorial
    • Spring MVC Tutorial
      • Quick Start
        • Flow Diagram
        • Hello World Example
        • Form Handling Example
      • Handler Mapping
        • BeanNameUrlHandlerMapping
        • ControllerClassNameHandlerMapping
        • SimpleUrlHandlerMapping
      • Validation & Exception Handling
        • Validation+Annotations
        • Validation+ResourceBundle
        • @ExceptionHandler
        • @ControllerAdvice
        • Custom Exception Handling
      • Form Tag Library
        • Textbox Example
        • TextArea Example
        • Password Example
        • Dropdown Box Example
        • Checkboxes Example
        • Radiobuttons Example
        • HiddenValue Example
      • Misc
        • Change Config file name
    • Spring Boot Tutorial
  • Hibernate Tutorial
  • REST Tutorial
    • JAX-RS REST @PathParam Example
    • JAX-RS REST @QueryParam Example
    • JAX-RS REST @DefaultValue Example
    • JAX-RS REST @Context Example
    • JAX-RS REST @MatrixParam Example
    • JAX-RS REST @FormParam Example
    • JAX-RS REST @Produces Example
    • JAX-RS REST @Consumes Example
    • JAX-RS REST @Produces both XML and JSON Example
    • JAX-RS REST @Consumes both XML and JSON Example
  • Miscellaneous
    • JSON Parser
      • Read a JSON file
      • Write JSON object to File
      • Read / Write JSON using GSON
      • Java Object to JSON using JAXB
    • CSV Parser
      • Read / Write CSV file
      • Read/Parse/Write CSV File – OpenCSV
      • Export data into a CSV File
      • CsvToBean and BeanToCsv – OpenCSV

JavaInterviewPoint

Java Development Tutorials

Polymorphism in Java – Method Overloading and Overriding

April 20, 2014 by javainterviewpoint 5 Comments

Polymorphism is the ability to take more than one form. Polymorphism is one of the most important concept in OOPS ( Object Oriented Programming Concepts). Subclasses of a class can define their own unique behaviors and yet share some of the same functionality of the parent class.

In Java, there are 2 ways by which you can achieve polymorphic behavior

1. Method Overloading

2. Method Overriding

What is Method Overloading in Java?

Method Overloading implies you have more than one method with the same name within the same class but the conditions here is that the parameter which is passed should be different.

class Overloading
{
	public void disp()
	{
		System.out.println("Inside First disp method");
	}

	public void disp(String val)
	{
		System.out.println("Inside Second disp method, value is: "+val);
	}

	public void disp(String val1,String val2)
	{
		System.out.println("Inside Third disp method, values are : "+val1+","+val2);
	}
}
public class MethodOverloading_Example 
{
	public static void main (String args[])
	{
		Overloading oo = new Overloading();
		oo.disp(); //Calls the first disp method
		oo.disp("Java Interview"); //Calls the second disp method
		oo.disp("JavaInterview", "Point"); //Calls the third disp method
	}

}

The output will be

Inside First disp method
Inside Second disp method, value is: Java Interview
Inside Third disp method, values are : JavaInterview,Point

Here the disp() method will be called three times, but the question is how the different disp() are called. The answer is based on the parameter the  compiler will choose which methods to be called.

What is Method Overriding in Java?

Method overriding is almost the same as Method Overloading with a slight change, overriding has the same method name, with the same number of arguments but the methods present in the different classes. Method Overriding is possible only through inheritance .

class ParentClass
{
	public void disp()
	{
		System.out.println("Parent Class is called");
	}
}
class ChildClass extends ParentClass
{
	public void disp()
	{
		System.out.println("Child Class is called");
	}
}
public class Overriding_Example 
{
	public static void main(String args[])
	{
		ParentClass obj1 = new ParentClass(); 

		//ParentClass reference but ChildClass Object.
		ParentClass  obj2 = new ChildClass();

		// Parent Class disp () will be called.
		obj1.disp(); 

		// Child Class disp () will be called, as it reference to the child class.
		obj2.disp(); 
	}
}

The above code gives you the below output.

Parent Class is called
Child Class is called

The Child Class disp is called because though the obj2 reference may be a ParentClass reference but the object is ChildClass object and hence the disp() of the child class is called . This is called as Dynamic Binding or Late Binding or Runtime Polymorphism

Use of Super Keyword in Overriding

If you wish to call the ParentClass method through the ChildClass Method then we can use the super keyword to do so. Then the same above example can be re-written as

class ParentClass
{
	public void disp()
	{
		System.out.println("Parent Class is called");
	}
}
class ChildClass extends ParentClass
{
	public void disp()
	{
		super.disp();
		System.out.println("Child Class is called");
	}
}
public class Overriding_Example 
{
	public static void main(String args[])
	{
		//ParentClass reference but ChildClass Object.
		ParentClass  obj1 = new ChildClass();

		// Child Class disp () will be called, as it reference to the child class.
		obj1.disp(); 
	}
}

Here super.disp() will help you calling the Parent Class disp().

Parent Class is called
Child Class is called

Note : To easily remember Overloading and Overriding

Overloading – Same Class, Same Method Name, Different Parameters

Overriding    – Different Class, Same Method Name, Same Parameters.

Happy Learning 🙂

Other interesting articles which you may like …

  • JVM Architecture – Understanding JVM Internals
  • Object and Object Class in Java
  • Difference between JDK, JRE and JVM
  • Components of Java Development Kit (JDK)
  • What is a Class in Java with Example
  • How to open .class file in Java
  • Java Method Overloading Example
  • Java Constructor Overloading Example
  • Java this keyword | Core Java Tutorial
  • Java super keyword
  • Abstract Class in Java
  • Interface in Java and Uses of Interface in Java
  • What is Marker Interface

Filed Under: Core Java, Java, Java Interview, OOPs, Polymorphism Tagged With: Dynamic Binding, Java, OOPs, overloading, overriding, polymorphism, Runtime Polymorphism

Comments

  1. pranit says

    December 14, 2017 at 10:17 am

    Informative and practical article you have shared here!
    As a java beginner yet i was just knowing whenever same method name is exiting multiple times in the same class with different number of parameter or different order of parameters or different types of parameters is known as method overloading. Thanks for sharing the information.

    Reply
    • Shwati says

      May 3, 2019 at 11:07 am

      Very useful for interview . Good explanation

      Reply
  2. priya says

    May 11, 2018 at 11:38 am

    The basic reason behind polymorphism is that we can implement different behaviors of the same object depending upon the reference type passed to an object. Thanks for sharing this.

    Reply
  3. jogi says

    July 11, 2019 at 3:15 pm

    in method overriding example program
    ParentClass obj1 = new ChildClass();
    is this a object creation or up casting

    Reply
    • javainterviewpoint says

      July 11, 2019 at 9:29 pm

      Both are correct in one way or other. Up casting apt is the terminology to be used, in order to make the code understandable to beginners i have used the term object creation or assigning the child object to the parent reference.

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Java Basics

  • JVM Architecture
  • Object in Java
  • Class in Java
  • How to Set Classpath for Java in Windows
  • Components of JDK
  • Decompiling a class file
  • Use of Class.forName in java
  • Use Class.forName in SQL JDBC

Oops Concepts

  • Inheritance in Java
  • Types of Inheritance in Java
  • Single Inheritance in Java
  • Multiple Inheritance in Java
  • Multilevel Inheritance in Java
  • Hierarchical Inheritance in Java
  • Hybrid Inheritance in Java
  • Polymorphism in Java – Method Overloading and Overriding
  • Types of Polymorphism in java
  • Method Overriding in Java
  • Can we Overload static methods in Java
  • Can we Override static methods in Java
  • Java Constructor Overloading
  • Java Method Overloading Example
  • Encapsulation in Java with Example
  • Constructor in Java
  • Constructor in an Interface?
  • Parameterized Constructor in Java
  • Constructor Chaining with example
  • What is the use of a Private Constructors in Java
  • Interface in Java
  • What is Marker Interface
  • Abstract Class in Java

Java Keywords

  • Java this keyword
  • Java super keyword
  • Final Keyword in Java
  • static Keyword in Java
  • Static Import
  • Transient Keyword

Miscellaneous

  • newInstance() method
  • How does Hashmap works internally in Java
  • Java Ternary operator
  • How System.out.println() really work?
  • Autoboxing and Unboxing Examples
  • Serialization and Deserialization in Java with Example
  • Generate SerialVersionUID in Java
  • How to make a class Immutable in Java
  • Differences betwen HashMap and Hashtable
  • Difference between Enumeration and Iterator ?
  • Difference between fail-fast and fail-safe Iterator
  • Difference Between Interface and Abstract Class in Java
  • Difference between equals() and ==
  • Sort Objects in a ArrayList using Java Comparable Interface
  • Sort Objects in a ArrayList using Java Comparator

Follow

  • Coding Utils

Useful Links

  • Spring 4.1.x Documentation
  • Spring 3.2.x Documentation
  • Spring 2.5.x Documentation
  • Java 6 API
  • Java 7 API
  • Java 8 API
  • Java EE 5 Tutorial
  • Java EE 6 Tutorial
  • Java EE 7 Tutorial
  • Maven Repository
  • Hibernate ORM

About JavaInterviewPoint

javainterviewpoint.com is a tech blog dedicated to all Java/J2EE developers and Web Developers. We publish useful tutorials on Java, J2EE and all latest frameworks.

All examples and tutorials posted here are very well tested in our development environment.

Connect with us on Facebook | Privacy Policy | Sitemap

Copyright ©2023 · Java Interview Point - All Rights Are Reserved ·