I have recently used default methods in java. In its implementation I found
public interface DefaultMethod {
default String showMyName(String name){
return "Hai "+name;
}
}
public class DefaultMethodMainImpl implements DefaultMethod{
@Override
public String showMyName(String name){
return DefaultMethod.super.showMyName(name);
}
}
My question is in DefaultMethod.super where super will call it have no super class except Object? what super will return?
Interfaces are not classes. Therefore, an interface cannot have a superclass, and your question is essentially invalid. Is Interface a class?
The super keyword can be used as a qualifier to invoke the overridden method in a class or an interface.
The super() in Java is a reference variable that is used to refer parent class constructors. super can be used to call parent class' variables and methods. super() can be used to call parent class' constructors only.
Your code would break if you called a super of a super that had no super. Object oriented programming (which Java is) is all about objects, not functions. If you want task oriented programming, choose C++ or something else.
If you use super
in a class
it usually refers to the ancestor of that class (either the extend
ed class or Object
).
In the case of overriden default
method of an interface
you have to specify the specific interface which default implementation you want to invoke, hence
<Interface>.super.<method>();
See also The diamond problem.
<Interface>.<method>();
would consider <method>
as static, and this is not the case. Hence the use of key word super
which is a reference variable that is used to refer a "parent" object.
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