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.
Using Super to call an Overridden Method — AP CSA Java Review - Obsolete 11.9. Using Super to call an Overridden Method ¶ Sometimes you want the child class to do more than what a parent method is doing. You want to still execute the parent method, but then do also do something else.
However foo in class A is useful and needs to be called. Show activity on this post. 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 ().
The object of the class GFG calls a method with a String Parameter. If both parent & child classes have the same method, then the child class would override the method available in its parent class. By using the super keyword we can take advantage of both classes (child and parent) to achieve this.
The keyword superdoesn't "stick". Every method call is handled individually, so even if you got to SuperClass.method1()by calling super, that doesn't influence any other method call that you might make in the future.
super.foo()
, not super().foo()
. super()
calls the constructor of the parent class.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.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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With