oop Polymorphism Method Overriding


Method overriding is the way of using polymorphism between classes. if one class is inherited from another, the former (sub class) can override the latter's (super class's) methods, and change the implementation.

this is used where the super class defines the more general implementation of the method while the sub class uses a more specific one.

Consider following example:

We have a class for Mammals:

class Mammal {
  void whoIam () {
    System.out.println("I am a Mammal");

Then we have a class for Dog, which is a Mammal:

class Dog extends Mammal {
  void whoIam () {
    System.out.println("I am a Dog!");

In this example, we define whoIam() method in Mammal class, where the mammal say it is a Mammal. But this is a general term, as there are a lot of Mammals out there. Then we can inherit Dog class from Mammal class, as Dog is a Mammal. But, to be more specific, Dog is a Dog as well as a Mammal. Hence, Dog should say, I am a Mammal and also I am a Dog. Hence we can Override the whoIam() method in super class (Mammal class, that is) from sub class (the Dog class).

We can also call the super class's method using super.whoIam() in Java. Then, the Dog will behave like a Dog, while also behaving like a Mammal.