JAVA Method Overriding | Rules for method overriding

 Method Overriding 

Method overriding means having a different implementation of the same method in the inherited class. These two methods would have the same signature, but different implementation. One of these would exist in the base class and another in the derived class. These cannot exist in the same class. 

A subclass inherits methods from a superclass. Sometimes, it is necessary for the subclass to modify the methods defined in the superclass. This is referred to as method overriding. The following example demonstrates method overriding. 

class Father 

        String name; 
        double height; 
        int age; 
        void factory() 
                System.out.println("Parent factory()"); 
        void home() 
                System.out.println("some home()"); 

class Son extends Father 

        void factory() //Son modifying Father factory() 
                System.out.println("modified Parent factory() by Son“); 
        void home() //Son modifying Father factory() 
                System.out.println("modified Parent home() by Son"); 

public class Test 

        public static void main(String[] args) 
                Father f = new Son(); 
                f.factory(); //hear the Son's factory() is called, because Parent factory() is overridden by Son
                f.home(); //hear the Son's home() is called, because Parent home() is overridden by Son 

Rules for method overriding: 

  • The argument list should be exactly the same as that of the overridden method. 
  • The return type should be the same or a subtype of the return type declared in the original overridden method in the superclass. 
  • The access level cannot be more restrictive than the overridden method's access level. For example: if the superclass method is declared public then the overriding method in the sub 
  • class cannot be either private or protected. 
  • Instance methods can be overridden only if they are inherited by the subclass. 
  • A method declared final cannot be overridden. 
  • A method declared static cannot be overridden but can be re-declared. 
  • If a method cannot be inherited, then it cannot be overridden. 
  • A subclass within the same package as the instance's superclass can override any superclass method that is not declared private or final. 
  • A subclass in a different package can only override the non-final methods declared public or protected. 
  • An overriding method can throw any uncheck exceptions, regardless of whether the overridden method throws exceptions or not. However the overriding method should not throw checked exceptions that are new or broader than the ones declared by the overridden method. The overriding method can throw narrower or fewer exceptions than the overridden method. 
  • Constructors cannot be overridden.


"method overloading in java"

"method overloading and method overriding in java"

"constructor overriding in java"

"method overriding example"

"method overriding and method overloading"