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 キーワードを削除すると、静的メソッド呼び出しと非静的メソッド呼び出しを区別するという犠牲を払って読みやすくなります。