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.super.mayOrMayNotImplementThisMethod()
,IDefaultMethod.mayOrMayNotImplementThisMethod()
会更易读吗?删除super
关键字会使代码更易读,但代价是区分静态或非静态方法调用。
I
应该避免的事实。在这个特定的例子中,接口的唯一目的是演示默认方法,因此显式地使用I
,因为在这个例子中接口只是一个接口,没有其他作用。 - Chetan Kinger