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?