Polymorphism is the ability of a single object to take on many forms. In Java, polymorphism is most commonly used when a subclass overrides a method of its superclass.
class Calculator { // Overloaded method for adding two integers int add(int a, int b) { return a + b; } // Overloaded method for adding three integers int add(int a, int b, int c) { return a + b + c; } } public class PolymorphismExample { public static void main(String[] args) { Calculator calc = new Calculator(); System.out.println(calc.add(5, 3)); // Calls the two-parameter add method System.out.println(calc.add(1, 2, 3)); // Calls the three-parameter add method } }
Method overloading is a type of compile-time polymorphism. In this example, the add()
method is overloaded to accept different numbers of parameters.
class Animal { void sound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { @Override void sound() { System.out.println("Dog barks"); } } public class PolymorphismExample { public static void main(String[] args) { Animal myAnimal = new Animal(); // Animal reference and object Animal myDog = new Dog(); // Animal reference but Dog object myAnimal.sound(); // Outputs: Animal makes a sound myDog.sound(); // Outputs: Dog barks } }
In method overriding, the subclass provides a specific implementation of the method that is already defined in its superclass. In this example, the sound()
method is overridden in the Dog
class.