Java 8では、既存の実装を変更せずにインターフェースを拡張する機能を提供するデフォルトのメソッドが導入されています。
メソッドがオーバーライドされている場合、または異なるインターフェイスでデフォルト実装が競合しているために使用できない場合に、メソッドのデフォルト実装を明示的に呼び出すことができるかどうか疑問に思います。
interface A {
default void foo() {
System.out.println("A.foo");
}
}
class B implements A {
@Override
public void foo() {
System.out.println("B.foo");
}
public void afoo() {
// how to invoke A.foo() here?
}
}
上記のコードを考慮してA.foo()
、クラスBのメソッドからどのように呼び出しますか?