Java 8 引入了默认方法的概念。考虑以下带有默认方法的接口:
public interface IDefaultMethod {
public abstract void musImplementThisMethod();
public default void mayOrMayNotImplementThisMethod() {
System.out.println(" This method is optional for classes that implement this interface ");
}
}
还有一个实现这个接口的类:
public class DefaultMethodImpl implements IDefaultMethod {
@Override
public void musImplementThisMethod() {
System.out.println("This method must be implementd ");
}
@Override
public void mayOrMayNotImplementThisMethod() {
// TODO Auto-generated method stub
IDefaultMethod.super.mayOrMayNotImplementThisMethod();
}
}
我对以下调用的可读性有疑问mayOrMayNotImplementThisMethod
:
IDefaultMethod.super.mayOrMayNotImplementThisMethod();
我了解在上述调用中显式指定接口名称的原因是为了避免在类实现的多个接口具有相同方法的情况下产生混淆。我不明白的是super
关键字在这种情况下的含义。当我们说 时IDefaultMethod.super
,我们到底指的是什么?IDefaultMethod.mayOrMayNotImplementThisMethod() 不是比 IDefaultMethod.super.mayOrMayNotImplementThisMethod() 更具可读性吗?删除 super 关键字使其更具可读性,但代价是区分静态或非静态方法调用。