Rules for Overriding

  1. Only non-static visible instance methods can be overriden:

    • Private methods are not visible and hence not overriden.

    • Protected methods can be overriden by a subclass within the same package.

    • Static methods are not overriden, but they are inherited.

  2. When you refer to a child class object using a Parent reference (e.g.  Parent p = new Child()) and invoke a method, the overriden child class method will be invoked.

  3. The argument list must be same as that of the overridden method.

    • If they don't match, you might be doing an overload rather than override.

    • You can prevent accidental mistakes using the @Override annotation. 

      • Compiler will also throw error when @Override is applied on static methods, static variables or instance variables.

  4. In case of reference types (classes or interfaces), the return type must be the same as, or a subtype of the return type declared in the parent class method (also called covariant return type).

  5. In case of primitives, return types should be same; even int and short, or double and float, will give compilation error that: "The return type is incompatible with...".

  6. Final classes cannot be inheritted and final methods cannot be overriden.

  7. Constructors cannot be overridden.

  8. You cannot declare throws with new or wider checked exception

    • Can remove throws exception.

    • Can throw unchecked exception

  9. The overriding method must not have more restrictive access modifier.

    • Public cannot be made default, but a default can be made public.

  10. Can use the super keyword to invoke the overridden method from a subclass

  11. You can make a non-abstract method as abstract in child class; however child class should also be declared as abstract.

  12. The synchronized modifier and strictfp modifier has no effect on the rules of overriding.

Tags: 

Comments

I simply use @Override  annotation.. it will give error message at compile time... :)  so that we will check easily if any problems occur while overriding... :) :)

Was it useful?

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)