Bird
Raised Fist0
Javaprogramming~5 mins

Method overriding rules in Java - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is method overriding in Java?
Method overriding occurs when a subclass provides a specific implementation for a method that is already defined in its superclass with the same name, return type, and parameters.
Click to reveal answer
intermediate
Can the access modifier of an overriding method be more restrictive than the overridden method?
No, the overriding method cannot have a more restrictive access modifier. It can have the same or a less restrictive modifier to maintain accessibility.
Click to reveal answer
intermediate
Is it allowed to override a static method in Java?
No, static methods cannot be overridden. They can be hidden by another static method in the subclass, but this is not true overriding.
Click to reveal answer
advanced
What happens if the overriding method throws a checked exception not declared in the overridden method?
The overriding method cannot throw new or broader checked exceptions than the overridden method. It can throw fewer or narrower exceptions or none at all.
Click to reveal answer
intermediate
Can the return type of the overriding method differ from the overridden method?
Yes, since Java 5, the overriding method can have a covariant return type, meaning it can return a subtype of the original method's return type.
Click to reveal answer
Which of the following is true about method overriding in Java?
AStatic methods can be overridden like instance methods.
BThe overriding method can have a different name but same parameters.
CThe overriding method can have a more restrictive access modifier.
DThe overriding method must have the same name, parameters, and return type (or subtype) as the overridden method.
If a superclass method throws IOException, what exceptions can the overriding subclass method throw?
AIOException or its subclasses only.
BNo exceptions at all.
CAny checked exception including SQLException.
DAny unchecked exception only.
What happens if you try to override a private method in Java?
AIt overrides the private method successfully.
BIt creates a new method unrelated to the superclass method.
CIt causes a compile-time error.
DIt overrides the method only if the subclass is in the same package.
Which access modifier is allowed for an overriding method if the original method is declared as protected?
Aprivate
Bdefault (package-private)
Cprotected or public
DAny access modifier
Can a final method be overridden in Java?
ANo, final methods cannot be overridden.
BOnly if the method is static.
COnly if the subclass is in the same package.
DYes, final methods can be overridden.
Explain the key rules you must follow when overriding a method in Java.
Think about method signature, access, exceptions, and special method types.
You got /5 concepts.
    Describe what happens if you try to override a private or static method in Java.
    Consider visibility and method type differences.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which of the following is true about method overriding in Java?
      easy
      A. The method in the child class can have fewer parameters than the parent method.
      B. The method in the child class must have the same name and parameters as in the parent class.
      C. The method in the child class must be static to override the parent method.
      D. The method in the child class must have a different return type than the parent method.

      Solution

      1. Step 1: Understand method overriding signature rules

        Method overriding requires the child method to have the exact same name and parameter list as the parent method.
      2. Step 2: Check return type and modifiers

        The return type must be the same or a subtype, and the method cannot be static to override.
      3. Final Answer:

        The method in the child class must have the same name and parameters as in the parent class. -> Option B
      4. Quick Check:

        Method signature match = D [OK]
      Hint: Method name and parameters must match exactly to override [OK]
      Common Mistakes:
      • Thinking return type can be different
      • Assuming static methods can be overridden
      • Changing parameter count in child method
      2. Which of the following method declarations correctly overrides a parent method public int calculate(int x)?
      easy
      A. public int calculate(int x) { return x * 2; }
      B. public void calculate(int x) { System.out.println(x); }
      C. public int calculate(double x) { return (int)x; }
      D. static public int calculate(int x) { return x + 1; }

      Solution

      1. Step 1: Match method signature exactly

        The overriding method must have the same name and parameter types: calculate(int x).
      2. Step 2: Check return type and modifiers

        Return type must be int and method must not be static.
      3. Final Answer:

        public int calculate(int x) { return x * 2; } -> Option A
      4. Quick Check:

        Exact signature and return type = A [OK]
      Hint: Match method name, parameters, and return type exactly [OK]
      Common Mistakes:
      • Changing return type to void
      • Changing parameter type
      • Making method static
      3. What is the output of the following code?
      class Parent {
          void show() { System.out.println("Parent"); }
      }
      class Child extends Parent {
          @Override
          void show() { System.out.println("Child"); }
      }
      public class Test {
          public static void main(String[] args) {
              Parent obj = new Child();
              obj.show();
          }
      }
      medium
      A. Parent
      B. Runtime error
      C. Compilation error
      D. Child

      Solution

      1. Step 1: Understand dynamic method dispatch

        When a parent reference points to a child object, the overridden child method is called at runtime.
      2. Step 2: Check method overriding and call

        The show() method is overridden in Child, so obj.show() calls Child's version.
      3. Final Answer:

        Child -> Option D
      4. Quick Check:

        Overridden method called at runtime = B [OK]
      Hint: Overridden method runs, not parent, when using child object [OK]
      Common Mistakes:
      • Expecting parent method output
      • Confusing compile-time and runtime method calls
      • Ignoring @Override annotation effect
      4. Identify the error in the following code snippet:
      class Parent {
          void display() {}
      }
      class Child extends Parent {
          @Override
          void display(int x) {}
      }
      medium
      A. Cannot use @Override annotation on any method.
      B. Missing return type in Child's display method.
      C. Method display(int x) does not override display() due to different parameters.
      D. Child class cannot have methods with parameters.

      Solution

      1. Step 1: Compare method signatures in Parent and Child

        Parent has display() with no parameters; Child has display(int x) with one parameter.
      2. Step 2: Understand @Override annotation rules

        @Override requires exact signature match; here, parameters differ, so it's not overriding.
      3. Final Answer:

        Method display(int x) does not override display() due to different parameters. -> Option C
      4. Quick Check:

        @Override requires exact signature match = C [OK]
      Hint: @Override needs exact method signature match to avoid errors [OK]
      Common Mistakes:
      • Ignoring parameter difference
      • Thinking @Override can be used on any method
      • Assuming method overloading is overriding
      5. Consider this code:
      class Animal {
          Number getValue() { return 10; }
      }
      class Dog extends Animal {
          @Override
          Integer getValue() { return 20; }
      }

      Which statement about this overriding is correct?
      hard
      A. This is valid because Integer is a subclass of Number (covariant return type).
      B. This causes a compile-time error due to different return types.
      C. This is invalid because return types must be exactly the same.
      D. This is invalid because @Override cannot be used with different return types.

      Solution

      1. Step 1: Check return types in parent and child methods

        Parent returns Number, child returns Integer, which is a subclass of Number.
      2. Step 2: Understand covariant return types in Java overriding

        Java allows child methods to return a subtype of the parent's return type when overriding.
      3. Final Answer:

        This is valid because Integer is a subclass of Number (covariant return type). -> Option A
      4. Quick Check:

        Covariant return types allowed = A [OK]
      Hint: Child can return subtype of parent's return type when overriding [OK]
      Common Mistakes:
      • Thinking return types must be exactly the same
      • Assuming @Override forbids different return types
      • Confusing overloading with overriding