Java Overriding

If a class inherits a method from its super class, then there is a chance to override the method provided that it is not marked final.

The benefit of overriding is: ability to define a behavior that's specific to the sub class type. Which means a subclass
can implement a parent class method based on its requirement.

In object oriented terms, overriding means to override the functionality of any existing method.

Example:

Let us look at an example:

class Animal{
public void move()
{
System.out.println("Animals can move");
}
 }
 class Dog extends Animal{

public void move(){
 System.out.println("Dogs can walk and run");
}
 }
 public class TestDog{
public static void main(String args[]){
 Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object a.move();// runs the method in Animal class b.move();//Runs the method in Dog class
}
}


This would produce following result:

Animals can move Dogs can walk and run


In the above example you can see that the even though b is a type of Animal it runs the move method in the Dog
class. The reason for this is : In compile time the check is made on the reference type. However in the runtime JVM
figures out the object type and would run the method that belongs to that particular object.

Therefore in the above example, the program will compile properly since Animal class has the method move. Then at


the runtime it runs the method specific for that object.
Previous Post Next Post