Java: How to call super().super() in overridden method (grandparent method)

java

Solution

- To call a method in a super class, you use `super.foo()`, not `super().foo()`. `super()` calls the constructor of the parent class.

- There is no way to call `super.super.foo()`. You can add a call to `super.foo()` in class B, so that calling `super.foo()` in C, will call `super.foo()` in B which in turn will call `foo()` in A.

Problem

Possible Duplicate: Why is super.super.method(); not allowed in Java? I have 3 classes they inherit from each other as follows: ``` A ↳ B ↳ C ``` Inside each class I have the following method: ``` protected void foo() { ... } ``` Inside class `C` I want to call `foo` from class `A` without calling `foo` in `B`: ``` protected void foo() { // This doesn't work, I get the following compile time error: // Constructor call must be the first statement in a constructor super().super().foo(); } ``` EDIT Some Context Info: Class B is an actual class we use. Class C is a unit test class, it has some modifications. `foo` method inside `B` does some things we don't want so we override it inside `C`. However `foo` in class `A` is useful and needs to be called.

Original source

Related problems