27

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.

1

2 Answers 2

24
  • 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.
Sign up to request clarification or add additional context in comments.

Comments

16

It's not possible in Java. You'd need to rely on B providing you with an explicit way to access to A's foo.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.